<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}</span><span>
</span><span id="line-4"></span><span>
</span><span id="line-5"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-6"></span><span class="hs-comment">--</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- Machine-dependent assembly language</span><span>
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- (c) The University of Glasgow 1993-2004</span><span>
</span><span id="line-10"></span><span class="hs-comment">--</span><span>
</span><span id="line-11"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-15"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.CmmToAsm.PPC.Instr</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-16"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#archWordFormat"><span class="hs-identifier">archWordFormat</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier">RI</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier">Instr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-19"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#stackFrameHeaderSize"><span class="hs-identifier">stackFrameHeaderSize</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#maxSpillSlots"><span class="hs-identifier">maxSpillSlots</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#allocMoreStack"><span class="hs-identifier">allocMoreStack</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#makeFarBranches"><span class="hs-identifier">makeFarBranches</span></a></span><span>
</span><span id="line-23"></span><span class="hs-special">)</span><span>
</span><span id="line-24"></span><span>
</span><span id="line-25"></span><span class="hs-keyword">where</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-28"></span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html"><span class="hs-identifier">GHC.CmmToAsm.PPC.Regs</span></a></span><span>
</span><span id="line-30"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Cond.html"><span class="hs-identifier">GHC.CmmToAsm.PPC.Cond</span></a></span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html"><span class="hs-identifier">GHC.CmmToAsm.Instr</span></a></span><span>
</span><span id="line-32"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Format.html"><span class="hs-identifier">GHC.CmmToAsm.Format</span></a></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Reg.Target.html"><span class="hs-identifier">GHC.CmmToAsm.Reg.Target</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html"><span class="hs-identifier">GHC.CmmToAsm.Config</span></a></span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.Class.html"><span class="hs-identifier">GHC.Platform.Reg.Class</span></a></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html"><span class="hs-identifier">GHC.Platform.Reg</span></a></span><span>
</span><span id="line-37"></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Regs.html"><span class="hs-identifier">GHC.Platform.Regs</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html"><span class="hs-identifier">GHC.Cmm.BlockId</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Collections.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Collections</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Label</span></a></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Info.html"><span class="hs-identifier">GHC.Cmm.Info</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html"><span class="hs-identifier">GHC.Types.Unique.FM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Unique.FM.html#listToUFM"><span class="hs-identifier">listToUFM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html#lookupUFM"><span class="hs-identifier">lookupUFM</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html"><span class="hs-identifier">GHC.Types.Unique.Supply</span></a></span><span>
</span><span id="line-50"></span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Control.Monad.html#"><span class="hs-identifier">Control.Monad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Control.Monad.html#replicateM"><span class="hs-identifier">replicateM</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-52"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#"><span class="hs-identifier">Data.Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Maybe.html#fromMaybe"><span class="hs-identifier">fromMaybe</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-55"></span><span class="hs-comment">-- Format of a PPC memory address.</span><span>
</span><span id="line-56"></span><span class="hs-comment">--</span><span>
</span><span id="line-57"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#archWordFormat"><span class="hs-identifier hs-type">archWordFormat</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span>
</span><span id="line-58"></span><span id="archWordFormat"><span class="annot"><span class="annottext">archWordFormat :: Bool -&gt; Format
</span><a href="GHC.CmmToAsm.PPC.Instr.html#archWordFormat"><span class="hs-identifier hs-var hs-var">archWordFormat</span></a></span></span><span> </span><span id="local-6989586621681027869"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681027869"><span class="hs-identifier hs-var">is32Bit</span></a></span></span><span>
</span><span id="line-59"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681027869"><span class="hs-identifier hs-var">is32Bit</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II32"><span class="hs-identifier hs-var">II32</span></a></span><span>
</span><span id="line-60"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II64"><span class="hs-identifier hs-var">II64</span></a></span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span>
</span><span id="line-63"></span><span class="hs-comment">-- | Instruction instance for powerpc</span><span>
</span><span id="line-64"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#Instruction"><span class="hs-identifier hs-type">Instruction</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-65"></span><span>        </span><span id="local-6989586621681027850"><span class="annot"><span class="annottext">regUsageOfInstr :: Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#regUsageOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">regUsageOfInstr</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_regUsageOfInstr"><span class="hs-identifier hs-var">ppc_regUsageOfInstr</span></a></span><span>
</span><span id="line-66"></span><span>        </span><span id="local-6989586621681027847"><span class="annot"><span class="annottext">patchRegsOfInstr :: Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#patchRegsOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">patchRegsOfInstr</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchRegsOfInstr"><span class="hs-identifier hs-var">ppc_patchRegsOfInstr</span></a></span><span>
</span><span id="line-67"></span><span>        </span><span id="local-6989586621681027844"><span class="annot"><span class="annottext">isJumpishInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.Instr.html#isJumpishInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">isJumpishInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isJumpishInstr"><span class="hs-identifier hs-var">ppc_isJumpishInstr</span></a></span><span>
</span><span id="line-68"></span><span>        </span><span id="local-6989586621681027841"><span class="annot"><span class="annottext">jumpDestsOfInstr :: Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.Instr.html#jumpDestsOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">jumpDestsOfInstr</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_jumpDestsOfInstr"><span class="hs-identifier hs-var">ppc_jumpDestsOfInstr</span></a></span><span>
</span><span id="line-69"></span><span>        </span><span id="local-6989586621681027838"><span class="annot"><span class="annottext">patchJumpInstr :: Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#patchJumpInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">patchJumpInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchJumpInstr"><span class="hs-identifier hs-var">ppc_patchJumpInstr</span></a></span><span>
</span><span id="line-70"></span><span>        </span><span id="local-6989586621681027835"><span class="annot"><span class="annottext">mkSpillInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkSpillInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkSpillInstr</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkSpillInstr"><span class="hs-identifier hs-var">ppc_mkSpillInstr</span></a></span><span>
</span><span id="line-71"></span><span>        </span><span id="local-6989586621681027832"><span class="annot"><span class="annottext">mkLoadInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkLoadInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkLoadInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkLoadInstr"><span class="hs-identifier hs-var">ppc_mkLoadInstr</span></a></span><span>
</span><span id="line-72"></span><span>        </span><span id="local-6989586621681027829"><span class="annot"><span class="annottext">takeDeltaInstr :: Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.Instr.html#takeDeltaInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">takeDeltaInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeDeltaInstr"><span class="hs-identifier hs-var">ppc_takeDeltaInstr</span></a></span><span>
</span><span id="line-73"></span><span>        </span><span id="local-6989586621681027826"><span class="annot"><span class="annottext">isMetaInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.Instr.html#isMetaInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">isMetaInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isMetaInstr"><span class="hs-identifier hs-var">ppc_isMetaInstr</span></a></span><span>
</span><span id="line-74"></span><span>        </span><span id="local-6989586621681027823"><span class="annot"><span class="annottext">mkRegRegMoveInstr :: Platform -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkRegRegMoveInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkRegRegMoveInstr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkRegRegMoveInstr"><span class="hs-identifier hs-var">ppc_mkRegRegMoveInstr</span></a></span><span>
</span><span id="line-75"></span><span>        </span><span id="local-6989586621681027820"><span class="annot"><span class="annottext">takeRegRegMoveInstr :: Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.Instr.html#takeRegRegMoveInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">takeRegRegMoveInstr</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeRegRegMoveInstr"><span class="hs-identifier hs-var">ppc_takeRegRegMoveInstr</span></a></span><span>
</span><span id="line-76"></span><span>        </span><span id="local-6989586621681027817"><span class="annot"><span class="annottext">mkJumpInstr :: BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkJumpInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkJumpInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkJumpInstr"><span class="hs-identifier hs-var">ppc_mkJumpInstr</span></a></span><span>
</span><span id="line-77"></span><span>        </span><span id="local-6989586621681027814"><span class="annot"><span class="annottext">mkStackAllocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackAllocInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkStackAllocInstr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr"><span class="hs-identifier hs-var">ppc_mkStackAllocInstr</span></a></span><span>
</span><span id="line-78"></span><span>        </span><span id="local-6989586621681027811"><span class="annot"><span class="annottext">mkStackDeallocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackDeallocInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkStackDeallocInstr</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackDeallocInstr"><span class="hs-identifier hs-var">ppc_mkStackDeallocInstr</span></a></span><span>
</span><span id="line-79"></span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr"><span class="hs-identifier hs-type">ppc_mkStackAllocInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-82"></span><span id="ppc_mkStackAllocInstr"><span class="annot"><span class="annottext">ppc_mkStackAllocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr"><span class="hs-identifier hs-var hs-var">ppc_mkStackAllocInstr</span></a></span></span><span> </span><span id="local-6989586621681027808"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027808"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027807"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027807"><span class="hs-identifier hs-var">amount</span></a></span></span><span>
</span><span id="line-83"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr%27"><span class="hs-identifier hs-var">ppc_mkStackAllocInstr'</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027808"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027807"><span class="hs-identifier hs-var">amount</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-84"></span><span>
</span><span id="line-85"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackDeallocInstr"><span class="hs-identifier hs-type">ppc_mkStackDeallocInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-86"></span><span id="ppc_mkStackDeallocInstr"><span class="annot"><span class="annottext">ppc_mkStackDeallocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackDeallocInstr"><span class="hs-identifier hs-var hs-var">ppc_mkStackDeallocInstr</span></a></span></span><span> </span><span id="local-6989586621681027805"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027805"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027804"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027804"><span class="hs-identifier hs-var">amount</span></a></span></span><span>
</span><span id="line-87"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr%27"><span class="hs-identifier hs-var">ppc_mkStackAllocInstr'</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027805"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027804"><span class="hs-identifier hs-var">amount</span></a></span><span>
</span><span id="line-88"></span><span>
</span><span id="line-89"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr%27"><span class="hs-identifier hs-type">ppc_mkStackAllocInstr'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-90"></span><span id="ppc_mkStackAllocInstr%27"><span class="annot"><span class="annottext">ppc_mkStackAllocInstr' :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkStackAllocInstr%27"><span class="hs-identifier hs-var hs-var">ppc_mkStackAllocInstr'</span></a></span></span><span> </span><span id="local-6989586621681027803"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027803"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027802"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027802"><span class="hs-identifier hs-var">amount</span></a></span></span><span>
</span><span id="line-91"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Bool
forall a. Integral a =&gt; a -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Regs.html#fits16Bits"><span class="hs-identifier hs-var">fits16Bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027802"><span class="hs-identifier hs-var">amount</span></a></span><span>
</span><span id="line-92"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027799"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#r0"><span class="hs-identifier hs-var">r0</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027795"><span class="hs-identifier hs-var">zero</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-93"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-var">STU</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027799"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#r0"><span class="hs-identifier hs-var">r0</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027793"><span class="hs-identifier hs-var">immAmount</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-95"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-96"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027799"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#r0"><span class="hs-identifier hs-var">r0</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027795"><span class="hs-identifier hs-var">zero</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-97"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDIS"><span class="hs-identifier hs-var">ADDIS</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027791"><span class="hs-identifier hs-var">tmp</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#HA"><span class="hs-identifier hs-var">HA</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027793"><span class="hs-identifier hs-var">immAmount</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-98"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027791"><span class="hs-identifier hs-var">tmp</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027791"><span class="hs-identifier hs-var">tmp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; RI
</span><a href="GHC.CmmToAsm.PPC.Instr.html#RIImm"><span class="hs-identifier hs-var">RIImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#LO"><span class="hs-identifier hs-var">LO</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027793"><span class="hs-identifier hs-var">immAmount</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-99"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-var">STU</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027799"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#r0"><span class="hs-identifier hs-var">r0</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegReg"><span class="hs-identifier hs-var">AddrRegReg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027791"><span class="hs-identifier hs-var">tmp</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-100"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-101"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-102"></span><span>    </span><span id="local-6989586621681027799"><span class="annot"><span class="annottext">fmt :: Format
</span><a href="#local-6989586621681027799"><span class="hs-identifier hs-var hs-var">fmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Width -&gt; Format
</span><a href="GHC.CmmToAsm.Format.html#intFormat"><span class="hs-identifier hs-var">intFormat</span></a></span><span> </span><span class="annot"><span class="annottext">(Width -&gt; Format) -&gt; Width -&gt; Format
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Width
</span><a href="GHC.Cmm.Type.html#widthFromBytes"><span class="hs-identifier hs-var">widthFromBytes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027803"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-103"></span><span>    </span><span id="local-6989586621681027795"><span class="annot"><span class="annottext">zero :: Imm
</span><a href="#local-6989586621681027795"><span class="hs-identifier hs-var hs-var">zero</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-104"></span><span>    </span><span id="local-6989586621681027791"><span class="annot"><span class="annottext">tmp :: Reg
</span><a href="#local-6989586621681027791"><span class="hs-identifier hs-var hs-var">tmp</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#tmpReg"><span class="hs-identifier hs-var">tmpReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027803"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-105"></span><span>    </span><span id="local-6989586621681027793"><span class="annot"><span class="annottext">immAmount :: Imm
</span><a href="#local-6989586621681027793"><span class="hs-identifier hs-var hs-var">immAmount</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027802"><span class="hs-identifier hs-var">amount</span></a></span><span>
</span><span id="line-106"></span><span>
</span><span id="line-107"></span><span class="hs-comment">--</span><span>
</span><span id="line-108"></span><span class="hs-comment">-- See note [extra spill slots] in X86/Instr.hs</span><span>
</span><span id="line-109"></span><span class="hs-comment">--</span><span>
</span><span id="line-110"></span><span id="local-6989586621681027985"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#allocMoreStack"><span class="hs-identifier hs-type">allocMoreStack</span></a></span><span>
</span><span id="line-111"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span>
</span><span id="line-112"></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-113"></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#NatCmmDecl"><span class="hs-identifier hs-type">NatCmmDecl</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027985"><span class="hs-identifier hs-type">statics</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">GHC.CmmToAsm.PPC.Instr.Instr</span></a></span><span>
</span><span id="line-114"></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#NatCmmDecl"><span class="hs-identifier hs-type">NatCmmDecl</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027985"><span class="hs-identifier hs-type">statics</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">GHC.CmmToAsm.PPC.Instr.Instr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span class="hs-special">)</span></span><span>
</span><span id="line-115"></span><span>
</span><span id="line-116"></span><span id="allocMoreStack"><span class="annot"><span class="annottext">allocMoreStack :: forall statics.
Platform
-&gt; Int
-&gt; NatCmmDecl statics Instr
-&gt; UniqSM (NatCmmDecl statics Instr, [(BlockId, BlockId)])
</span><a href="GHC.CmmToAsm.PPC.Instr.html#allocMoreStack"><span class="hs-identifier hs-var hs-var">allocMoreStack</span></a></span></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027767"><span class="annot"><span class="annottext">top :: NatCmmDecl statics Instr
</span><a href="#local-6989586621681027767"><span class="hs-identifier hs-var">top</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">statics
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(NatCmmDecl statics Instr, [(BlockId, BlockId)])
-&gt; UniqSM (NatCmmDecl statics Instr, [(BlockId, BlockId)])
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NatCmmDecl statics Instr
</span><a href="#local-6989586621681027767"><span class="hs-identifier hs-var">top</span></a></span><span class="hs-special">,</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-117"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#allocMoreStack"><span class="hs-identifier hs-var">allocMoreStack</span></a></span><span> </span><span id="local-6989586621681027765"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027765"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027764"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027764"><span class="hs-identifier hs-var">slots</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-type">CmmProc</span></a></span><span> </span><span id="local-6989586621681027762"><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681027762"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621681027761"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027761"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681027760"><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681027760"><span class="hs-identifier hs-var">live</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#ListGraph"><span class="hs-identifier hs-type">ListGraph</span></a></span><span> </span><span id="local-6989586621681027758"><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027758"><span class="hs-identifier hs-var">code</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-118"></span><span>    </span><span class="hs-keyword">let</span><span>
</span><span id="line-119"></span><span>        </span><span id="local-6989586621681027756"><span class="annot"><span class="annottext">infos :: [KeyOf LabelMap]
</span><a href="#local-6989586621681027756"><span class="hs-identifier hs-var hs-var">infos</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics -&gt; [KeyOf LabelMap]
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; [KeyOf map]
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapKeys"><span class="hs-identifier hs-var">mapKeys</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681027762"><span class="hs-identifier hs-var">info</span></a></span><span>
</span><span id="line-120"></span><span>        </span><span id="local-6989586621681027751"><span class="annot"><span class="annottext">entries :: [BlockId]
</span><a href="#local-6989586621681027751"><span class="hs-identifier hs-var hs-var">entries</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027758"><span class="hs-identifier hs-var">code</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-121"></span><span>                    </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027756"><span class="hs-identifier hs-var">infos</span></a></span><span>
</span><span id="line-122"></span><span>                    </span><span class="annot"><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-type">BasicBlock</span></a></span><span> </span><span id="local-6989586621681027749"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027749"><span class="hs-identifier hs-var">entry</span></a></span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-comment">-- first block is the entry point</span><span>
</span><span id="line-123"></span><span>                        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027749"><span class="hs-identifier hs-var">entry</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [BlockId] -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027756"><span class="hs-identifier hs-var">infos</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027756"><span class="hs-identifier hs-var">infos</span></a></span><span>
</span><span id="line-124"></span><span>                        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027749"><span class="hs-identifier hs-var">entry</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [BlockId] -&gt; [BlockId]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027756"><span class="hs-identifier hs-var">infos</span></a></span><span>
</span><span id="line-125"></span><span>
</span><span id="line-126"></span><span>    </span><span id="local-6989586621681027747"><span class="annot"><span class="annottext">[Unique]
</span><a href="#local-6989586621681027747"><span class="hs-identifier hs-var">uniqs</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Int -&gt; UniqSM Unique -&gt; UniqSM [Unique]
forall (m :: * -&gt; *) a. Applicative m =&gt; Int -&gt; m a -&gt; m [a]
</span><a href="../../base/src/Control.Monad.html#replicateM"><span class="hs-identifier hs-var">replicateM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[BlockId] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027751"><span class="hs-identifier hs-var">entries</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">UniqSM Unique
forall (m :: * -&gt; *). MonadUnique m =&gt; m Unique
</span><a href="GHC.Types.Unique.Supply.html#getUniqueM"><span class="hs-identifier hs-var">getUniqueM</span></a></span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span>    </span><span class="hs-keyword">let</span><span>
</span><span id="line-129"></span><span>        </span><span id="local-6989586621681027739"><span class="annot"><span class="annottext">delta :: Int
</span><a href="#local-6989586621681027739"><span class="hs-identifier hs-var hs-var">delta</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027738"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackAlign"><span class="hs-identifier hs-var">stackAlign</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#quot"><span class="hs-operator hs-var">`quot`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackAlign"><span class="hs-identifier hs-var">stackAlign</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackAlign"><span class="hs-identifier hs-var">stackAlign</span></a></span><span> </span><span class="hs-comment">-- round up</span><span>
</span><span id="line-130"></span><span>            </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681027738"><span class="annot"><span class="annottext">x :: Int
</span><a href="#local-6989586621681027738"><span class="hs-identifier hs-var hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027764"><span class="hs-identifier hs-var">slots</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotSize"><span class="hs-identifier hs-var">spillSlotSize</span></a></span><span> </span><span class="hs-comment">-- sp delta</span><span>
</span><span id="line-131"></span><span>
</span><span id="line-132"></span><span>        </span><span id="local-6989586621681027730"><span class="annot"><span class="annottext">alloc :: [Instr]
</span><a href="#local-6989586621681027730"><span class="hs-identifier hs-var hs-var">alloc</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
forall instr. Instruction instr =&gt; Platform -&gt; Int -&gt; [instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackAllocInstr"><span class="hs-identifier hs-var">mkStackAllocInstr</span></a></span><span>   </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027765"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027739"><span class="hs-identifier hs-var">delta</span></a></span><span>
</span><span id="line-133"></span><span>        </span><span id="local-6989586621681027728"><span class="annot"><span class="annottext">dealloc :: [Instr]
</span><a href="#local-6989586621681027728"><span class="hs-identifier hs-var hs-var">dealloc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; [Instr]
forall instr. Instruction instr =&gt; Platform -&gt; Int -&gt; [instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackDeallocInstr"><span class="hs-identifier hs-var">mkStackDeallocInstr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027765"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027739"><span class="hs-identifier hs-var">delta</span></a></span><span>
</span><span id="line-134"></span><span>
</span><span id="line-135"></span><span>        </span><span id="local-6989586621681027727"><span class="annot"><span class="annottext">retargetList :: [(BlockId, BlockId)]
</span><a href="#local-6989586621681027727"><span class="hs-identifier hs-var hs-var">retargetList</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[BlockId] -&gt; [BlockId] -&gt; [(BlockId, BlockId)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[BlockId]
</span><a href="#local-6989586621681027751"><span class="hs-identifier hs-var">entries</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Unique -&gt; BlockId) -&gt; [Unique] -&gt; [BlockId]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Unique -&gt; BlockId
</span><a href="GHC.Cmm.BlockId.html#mkBlockId"><span class="hs-identifier hs-var">mkBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">[Unique]
</span><a href="#local-6989586621681027747"><span class="hs-identifier hs-var">uniqs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-136"></span><span>
</span><span id="line-137"></span><span>        </span><span class="annot"><a href="#local-6989586621681027725"><span class="hs-identifier hs-type">new_blockmap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html#LabelMap"><span class="hs-identifier hs-type">LabelMap</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-138"></span><span>        </span><span id="local-6989586621681027725"><span class="annot"><span class="annottext">new_blockmap :: LabelMap BlockId
</span><a href="#local-6989586621681027725"><span class="hs-identifier hs-var hs-var">new_blockmap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(KeyOf LabelMap, BlockId)] -&gt; LabelMap BlockId
forall (map :: * -&gt; *) a. IsMap map =&gt; [(KeyOf map, a)] -&gt; map a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapFromList"><span class="hs-identifier hs-var">mapFromList</span></a></span><span> </span><span class="annot"><span class="annottext">[(KeyOf LabelMap, BlockId)]
[(BlockId, BlockId)]
</span><a href="#local-6989586621681027727"><span class="hs-identifier hs-var">retargetList</span></a></span><span>
</span><span id="line-139"></span><span>
</span><span id="line-140"></span><span>        </span><span id="local-6989586621681027722"><span class="annot"><span class="annottext">insert_stack_insns :: GenBasicBlock Instr -&gt; [GenBasicBlock Instr]
</span><a href="#local-6989586621681027722"><span class="hs-identifier hs-var hs-var">insert_stack_insns</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-type">BasicBlock</span></a></span><span> </span><span id="local-6989586621681027721"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027721"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span id="local-6989586621681027720"><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027720"><span class="hs-identifier hs-var">insns</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-141"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681027719"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027719"><span class="hs-identifier hs-var">new_blockid</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap BlockId -&gt; Maybe BlockId
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap
BlockId
</span><a href="#local-6989586621681027721"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap BlockId
</span><a href="#local-6989586621681027725"><span class="hs-identifier hs-var">new_blockmap</span></a></span><span>
</span><span id="line-142"></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr] -&gt; GenBasicBlock Instr
forall i. BlockId -&gt; [i] -&gt; GenBasicBlock i
</span><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-var">BasicBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027721"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">([Instr] -&gt; GenBasicBlock Instr) -&gt; [Instr] -&gt; GenBasicBlock Instr
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027730"><span class="hs-identifier hs-var">alloc</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr] -&gt; [Instr] -&gt; [Instr]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.PPC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027719"><span class="hs-identifier hs-var">new_blockid</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-143"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr] -&gt; GenBasicBlock Instr
forall i. BlockId -&gt; [i] -&gt; GenBasicBlock i
</span><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-var">BasicBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027719"><span class="hs-identifier hs-var">new_blockid</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027715"><span class="hs-identifier hs-var">block'</span></a></span><span>
</span><span id="line-144"></span><span>                  </span><span class="hs-special">]</span><span>
</span><span id="line-145"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-146"></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr] -&gt; GenBasicBlock Instr
forall i. BlockId -&gt; [i] -&gt; GenBasicBlock i
</span><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-var">BasicBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027721"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027715"><span class="hs-identifier hs-var">block'</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-147"></span><span>            </span><span class="hs-keyword">where</span><span>
</span><span id="line-148"></span><span>              </span><span id="local-6989586621681027715"><span class="annot"><span class="annottext">block' :: [Instr]
</span><a href="#local-6989586621681027715"><span class="hs-identifier hs-var hs-var">block'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Instr -&gt; [Instr] -&gt; [Instr]) -&gt; [Instr] -&gt; [Instr] -&gt; [Instr]
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
</span><a href="#local-6989586621681027712"><span class="hs-identifier hs-var">insert_dealloc</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027720"><span class="hs-identifier hs-var">insns</span></a></span><span>
</span><span id="line-149"></span><span>
</span><span id="line-150"></span><span>        </span><span id="local-6989586621681027712"><span class="annot"><span class="annottext">insert_dealloc :: Instr -&gt; [Instr] -&gt; [Instr]
</span><a href="#local-6989586621681027712"><span class="hs-identifier hs-var hs-var">insert_dealloc</span></a></span></span><span> </span><span id="local-6989586621681027710"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027710"><span class="hs-identifier hs-var">insn</span></a></span></span><span> </span><span id="local-6989586621681027709"><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-151"></span><span>            </span><span class="hs-comment">-- BCTR might or might not be a non-local jump. For</span><span>
</span><span id="line-152"></span><span>            </span><span class="hs-comment">-- &quot;labeled-goto&quot; we use JMP, and for &quot;computed-goto&quot; we</span><span>
</span><span id="line-153"></span><span>            </span><span class="hs-comment">-- use MTCTR followed by BCTR. See 'PPC.CodeGen.genJump'.</span><span>
</span><span id="line-154"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027710"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-155"></span><span>                </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><span class="hs-identifier">_</span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027728"><span class="hs-identifier hs-var">dealloc</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr] -&gt; [Instr] -&gt; [Instr]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027710"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-156"></span><span>                </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027728"><span class="hs-identifier hs-var">dealloc</span></a></span><span> </span><span class="annot"><span class="annottext">[Instr] -&gt; [Instr] -&gt; [Instr]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027710"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-157"></span><span>                </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span> </span><span id="local-6989586621681027706"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027706"><span class="hs-identifier hs-var">ids</span></a></span></span><span> </span><span id="local-6989586621681027705"><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027705"><span class="hs-keyword hs-var">label</span></a></span></span><span> </span><span id="local-6989586621681027704"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027704"><span class="hs-identifier hs-var">rs</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId] -&gt; Maybe CLabel -&gt; [Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-var">BCTR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Maybe BlockId -&gt; Maybe BlockId)
-&gt; [Maybe BlockId] -&gt; [Maybe BlockId]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BlockId -&gt; BlockId) -&gt; Maybe BlockId -&gt; Maybe BlockId
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027703"><span class="hs-identifier hs-var">retarget</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027706"><span class="hs-identifier hs-var">ids</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027705"><span class="hs-keyword hs-var">label</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027704"><span class="hs-identifier hs-var">rs</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-158"></span><span>                </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span> </span><span id="local-6989586621681027701"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027701"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621681027700"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027700"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681027699"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027699"><span class="hs-identifier hs-var">p</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-var">BCCFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027701"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027703"><span class="hs-identifier hs-var">retarget</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027700"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027699"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-159"></span><span>                </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span>    </span><span id="local-6989586621681027698"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027698"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621681027697"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027697"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681027696"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027696"><span class="hs-identifier hs-var">p</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span>    </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027698"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027703"><span class="hs-identifier hs-var">retarget</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027697"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027696"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-160"></span><span>                </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027710"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [Instr] -&gt; [Instr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027709"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-161"></span><span>            </span><span class="hs-comment">-- BL and BCTRL are call-like instructions rather than</span><span>
</span><span id="line-162"></span><span>            </span><span class="hs-comment">-- jumps, and are used only for C calls.</span><span>
</span><span id="line-163"></span><span>
</span><span id="line-164"></span><span>        </span><span class="annot"><a href="#local-6989586621681027703"><span class="hs-identifier hs-type">retarget</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-165"></span><span>        </span><span id="local-6989586621681027703"><span class="annot"><span class="annottext">retarget :: BlockId -&gt; BlockId
</span><a href="#local-6989586621681027703"><span class="hs-identifier hs-var hs-var">retarget</span></a></span></span><span> </span><span id="local-6989586621681027695"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027695"><span class="hs-identifier hs-var">b</span></a></span></span><span>
</span><span id="line-166"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; Maybe BlockId -&gt; BlockId
forall a. a -&gt; Maybe a -&gt; a
</span><a href="../../base/src/Data.Maybe.html#fromMaybe"><span class="hs-identifier hs-var">fromMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027695"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap BlockId -&gt; Maybe BlockId
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap
BlockId
</span><a href="#local-6989586621681027695"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap BlockId
</span><a href="#local-6989586621681027725"><span class="hs-identifier hs-var">new_blockmap</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-167"></span><span>
</span><span id="line-168"></span><span>        </span><span id="local-6989586621681027693"><span class="annot"><span class="annottext">new_code :: [GenBasicBlock Instr]
</span><a href="#local-6989586621681027693"><span class="hs-identifier hs-var hs-var">new_code</span></a></span></span><span>
</span><span id="line-169"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GenBasicBlock Instr -&gt; [GenBasicBlock Instr])
-&gt; [GenBasicBlock Instr] -&gt; [GenBasicBlock Instr]
forall (t :: * -&gt; *) a b. Foldable t =&gt; (a -&gt; [b]) -&gt; t a -&gt; [b]
</span><a href="../../base/src/Data.Foldable.html#concatMap"><span class="hs-identifier hs-var">concatMap</span></a></span><span> </span><span class="annot"><span class="annottext">GenBasicBlock Instr -&gt; [GenBasicBlock Instr]
</span><a href="#local-6989586621681027722"><span class="hs-identifier hs-var">insert_stack_insns</span></a></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027758"><span class="hs-identifier hs-var">code</span></a></span><span>
</span><span id="line-170"></span><span>
</span><span id="line-171"></span><span>    </span><span class="hs-comment">-- in</span><span>
</span><span id="line-172"></span><span>    </span><span class="annot"><span class="annottext">(NatCmmDecl statics Instr, [(BlockId, BlockId)])
-&gt; UniqSM (NatCmmDecl statics Instr, [(BlockId, BlockId)])
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
-&gt; CLabel
-&gt; [GlobalReg]
-&gt; ListGraph Instr
-&gt; NatCmmDecl statics Instr
forall d h g. h -&gt; CLabel -&gt; [GlobalReg] -&gt; g -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-var">CmmProc</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681027762"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027761"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681027760"><span class="hs-identifier hs-var">live</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[GenBasicBlock Instr] -&gt; ListGraph Instr
forall i. [GenBasicBlock i] -&gt; ListGraph i
</span><a href="GHC.Cmm.html#ListGraph"><span class="hs-identifier hs-var">ListGraph</span></a></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027693"><span class="hs-identifier hs-var">new_code</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span class="annot"><span class="annottext">[(BlockId, BlockId)]
</span><a href="#local-6989586621681027727"><span class="hs-identifier hs-var">retargetList</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-176"></span><span class="hs-comment">-- Machine's assembly language</span><span>
</span><span id="line-177"></span><span>
</span><span id="line-178"></span><span class="hs-comment">-- We have a few common &quot;instructions&quot; (nearly all the pseudo-ops) but</span><span>
</span><span id="line-179"></span><span class="hs-comment">-- mostly all of 'Instr' is machine-specific.</span><span>
</span><span id="line-180"></span><span>
</span><span id="line-181"></span><span class="hs-comment">-- Register or immediate</span><span>
</span><span id="line-182"></span><span class="hs-keyword">data</span><span> </span><span id="RI"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-var">RI</span></a></span></span><span>
</span><span id="line-183"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span id="RIReg"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RIReg"><span class="hs-identifier hs-var">RIReg</span></a></span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-184"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="RIImm"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RIImm"><span class="hs-identifier hs-var">RIImm</span></a></span></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>
</span><span id="line-185"></span><span>
</span><span id="line-186"></span><span class="hs-keyword">data</span><span> </span><span id="Instr"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-var">Instr</span></a></span></span><span>
</span><span id="line-187"></span><span>    </span><span class="hs-comment">-- comment pseudo-op</span><span>
</span><span id="line-188"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span id="COMMENT"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#COMMENT"><span class="hs-identifier hs-var">COMMENT</span></a></span></span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span>
</span><span id="line-189"></span><span>
</span><span id="line-190"></span><span>    </span><span class="hs-comment">-- location pseudo-op (file, line, col, name)</span><span>
</span><span id="line-191"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LOCATION"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LOCATION"><span class="hs-identifier hs-var">LOCATION</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span>    </span><span class="hs-comment">-- some static data spat out during code</span><span>
</span><span id="line-194"></span><span>    </span><span class="hs-comment">-- generation.  Will be extracted before</span><span>
</span><span id="line-195"></span><span>    </span><span class="hs-comment">-- pretty-printing.</span><span>
</span><span id="line-196"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LDATA"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDATA"><span class="hs-identifier hs-var">LDATA</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-type">Section</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmStatics"><span class="hs-identifier hs-type">RawCmmStatics</span></a></span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span>    </span><span class="hs-comment">-- start a new basic block.  Useful during</span><span>
</span><span id="line-199"></span><span>    </span><span class="hs-comment">-- codegen, removed later.  Preceding</span><span>
</span><span id="line-200"></span><span>    </span><span class="hs-comment">-- instruction should be a jump, as per the</span><span>
</span><span id="line-201"></span><span>    </span><span class="hs-comment">-- invariants for a BasicBlock (see Cmm).</span><span>
</span><span id="line-202"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="NEWBLOCK"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NEWBLOCK"><span class="hs-identifier hs-var">NEWBLOCK</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-203"></span><span>
</span><span id="line-204"></span><span>    </span><span class="hs-comment">-- specify current stack offset for</span><span>
</span><span id="line-205"></span><span>    </span><span class="hs-comment">-- benefit of subsequent passes</span><span>
</span><span id="line-206"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="DELTA"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DELTA"><span class="hs-identifier hs-var">DELTA</span></a></span></span><span>   </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-207"></span><span>
</span><span id="line-208"></span><span>    </span><span class="hs-comment">-- Loads and stores.</span><span>
</span><span id="line-209"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LD"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span></span><span>      </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Load format, dst, src</span><span>
</span><span id="line-210"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LDFAR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDFAR"><span class="hs-identifier hs-var">LDFAR</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Load format, dst, src 32 bit offset</span><span>
</span><span id="line-211"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LDR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDR"><span class="hs-identifier hs-var">LDR</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Load and reserve format, dst, src</span><span>
</span><span id="line-212"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LA"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LA"><span class="hs-identifier hs-var">LA</span></a></span></span><span>      </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Load arithmetic format, dst, src</span><span>
</span><span id="line-213"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ST"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span></span><span>      </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Store format, src, dst</span><span>
</span><span id="line-214"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="STFAR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STFAR"><span class="hs-identifier hs-var">STFAR</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Store format, src, dst 32 bit offset</span><span>
</span><span id="line-215"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="STU"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-var">STU</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Store with Update format, src, dst</span><span>
</span><span id="line-216"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="STC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STC"><span class="hs-identifier hs-var">STC</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>   </span><span class="hs-comment">-- Store conditional format, src, dst</span><span>
</span><span id="line-217"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LIS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LIS"><span class="hs-identifier hs-var">LIS</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>               </span><span class="hs-comment">-- Load Immediate Shifted dst, src</span><span>
</span><span id="line-218"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LI"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LI"><span class="hs-identifier hs-var">LI</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>               </span><span class="hs-comment">-- Load Immediate dst, src</span><span>
</span><span id="line-219"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-var">MR</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- Move Register dst, src -- also for fmr</span><span>
</span><span id="line-220"></span><span>
</span><span id="line-221"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CMP"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMP"><span class="hs-identifier hs-var">CMP</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>         </span><span class="hs-comment">-- format, src1, src2</span><span>
</span><span id="line-222"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CMPL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMPL"><span class="hs-identifier hs-var">CMPL</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>         </span><span class="hs-comment">-- format, src1, src2</span><span>
</span><span id="line-223"></span><span>
</span><span id="line-224"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="BCC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Cond.html#Cond"><span class="hs-identifier hs-type">Cond</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- cond, block, hint</span><span>
</span><span id="line-225"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="BCCFAR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-var">BCCFAR</span></a></span></span><span>  </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Cond.html#Cond"><span class="hs-identifier hs-type">Cond</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- cond, block, hint</span><span>
</span><span id="line-226"></span><span>                                    </span><span class="hs-comment">--   hint:</span><span>
</span><span id="line-227"></span><span>                                    </span><span class="hs-comment">--    Just True:  branch likely taken</span><span>
</span><span id="line-228"></span><span>                                    </span><span class="hs-comment">--    Just False: branch likely not taken</span><span>
</span><span id="line-229"></span><span>                                    </span><span class="hs-comment">--    Nothing:    no hint</span><span>
</span><span id="line-230"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="JMP"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-var">JMP</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">]</span><span>          </span><span class="hs-comment">-- same as branch,</span><span>
</span><span id="line-231"></span><span>                                    </span><span class="hs-comment">-- but with CLabel instead of block ID</span><span>
</span><span id="line-232"></span><span>                                    </span><span class="hs-comment">-- and live global registers</span><span>
</span><span id="line-233"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MTCTR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MTCTR"><span class="hs-identifier hs-var">MTCTR</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-234"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="BCTR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-var">BCTR</span></a></span></span><span>    </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-235"></span><span>                                    </span><span class="hs-comment">-- with list of local destinations, and</span><span>
</span><span id="line-236"></span><span>                                    </span><span class="hs-comment">-- jump table location if necessary</span><span>
</span><span id="line-237"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="BL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BL"><span class="hs-identifier hs-var">BL</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">]</span><span>          </span><span class="hs-comment">-- with list of argument regs</span><span>
</span><span id="line-238"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="BCTRL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTRL"><span class="hs-identifier hs-var">BCTRL</span></a></span></span><span>   </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-239"></span><span>
</span><span id="line-240"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADD"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- dst, src1, src2</span><span>
</span><span id="line-241"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADDO"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDO"><span class="hs-identifier hs-var">ADDO</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- add and set overflow</span><span>
</span><span id="line-242"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADDC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDC"><span class="hs-identifier hs-var">ADDC</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- (carrying) dst, src1, src2</span><span>
</span><span id="line-243"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADDE"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDE"><span class="hs-identifier hs-var">ADDE</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- (extended) dst, src1, src2</span><span>
</span><span id="line-244"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADDZE"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDZE"><span class="hs-identifier hs-var">ADDZE</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- (to zero extended) dst, src</span><span>
</span><span id="line-245"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ADDIS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDIS"><span class="hs-identifier hs-var">ADDIS</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>           </span><span class="hs-comment">-- Add Immediate Shifted dst, src1, src2</span><span>
</span><span id="line-246"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SUBF"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBF"><span class="hs-identifier hs-var">SUBF</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- dst, src1, src2 ; dst = src2 - src1</span><span>
</span><span id="line-247"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SUBFO"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFO"><span class="hs-identifier hs-var">SUBFO</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- subtract from and set overflow</span><span>
</span><span id="line-248"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SUBFC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFC"><span class="hs-identifier hs-var">SUBFC</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- (carrying) dst, src1, src2 ;</span><span>
</span><span id="line-249"></span><span>                                    </span><span class="hs-comment">-- dst = src2 - src1</span><span>
</span><span id="line-250"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SUBFE"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFE"><span class="hs-identifier hs-var">SUBFE</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- (extended) dst, src1, src2 ;</span><span>
</span><span id="line-251"></span><span>                                    </span><span class="hs-comment">-- dst = src2 - src1</span><span>
</span><span id="line-252"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MULL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULL"><span class="hs-identifier hs-var">MULL</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>
</span><span id="line-253"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MULLO"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULLO"><span class="hs-identifier hs-var">MULLO</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>    </span><span class="hs-comment">-- multiply and set overflow</span><span>
</span><span id="line-254"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MFOV"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFOV"><span class="hs-identifier hs-var">MFOV</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>            </span><span class="hs-comment">-- move overflow bit (1|33) to register</span><span>
</span><span id="line-255"></span><span>                                    </span><span class="hs-comment">-- pseudo-instruction; pretty printed as</span><span>
</span><span id="line-256"></span><span>                                    </span><span class="hs-comment">-- mfxer dst</span><span>
</span><span id="line-257"></span><span>                                    </span><span class="hs-comment">-- extr[w|d]i dst, dst, 1, [1|33]</span><span>
</span><span id="line-258"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MULHU"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULHU"><span class="hs-identifier hs-var">MULHU</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-259"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="DIV"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DIV"><span class="hs-identifier hs-var">DIV</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-260"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="AND"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#AND"><span class="hs-identifier hs-var">AND</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- dst, src1, src2</span><span>
</span><span id="line-261"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ANDC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ANDC"><span class="hs-identifier hs-var">ANDC</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- AND with complement, dst = src1 &amp; ~ src2</span><span>
</span><span id="line-262"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="NAND"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NAND"><span class="hs-identifier hs-var">NAND</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- dst, src1, src2</span><span>
</span><span id="line-263"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="OR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#OR"><span class="hs-identifier hs-var">OR</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- dst, src1, src2</span><span>
</span><span id="line-264"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ORIS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ORIS"><span class="hs-identifier hs-var">ORIS</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>           </span><span class="hs-comment">-- OR Immediate Shifted dst, src1, src2</span><span>
</span><span id="line-265"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="XOR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XOR"><span class="hs-identifier hs-var">XOR</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- dst, src1, src2</span><span>
</span><span id="line-266"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="XORIS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XORIS"><span class="hs-identifier hs-var">XORIS</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>           </span><span class="hs-comment">-- XOR Immediate Shifted dst, src1, src2</span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="EXTS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#EXTS"><span class="hs-identifier hs-var">EXTS</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-269"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CNTLZ"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CNTLZ"><span class="hs-identifier hs-var">CNTLZ</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-270"></span><span>
</span><span id="line-271"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="NEG"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NEG"><span class="hs-identifier hs-var">NEG</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-272"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="NOT"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NOT"><span class="hs-identifier hs-var">NOT</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-273"></span><span>
</span><span id="line-274"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SL"><span class="hs-identifier hs-var">SL</span></a></span></span><span>      </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- shift left</span><span>
</span><span id="line-275"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SR"><span class="hs-identifier hs-var">SR</span></a></span></span><span>      </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- shift right</span><span>
</span><span id="line-276"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="SRA"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SRA"><span class="hs-identifier hs-var">SRA</span></a></span></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span>            </span><span class="hs-comment">-- shift right arithmetic</span><span>
</span><span id="line-277"></span><span>
</span><span id="line-278"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="RLWINM"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RLWINM"><span class="hs-identifier hs-var">RLWINM</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>   </span><span class="hs-comment">-- Rotate Left Word Immediate then AND with Mask</span><span>
</span><span id="line-279"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CLRLI"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRLI"><span class="hs-identifier hs-var">CLRLI</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>    </span><span class="hs-comment">-- clear left immediate (extended mnemonic)</span><span>
</span><span id="line-280"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CLRRI"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRRI"><span class="hs-identifier hs-var">CLRRI</span></a></span></span><span>   </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>    </span><span class="hs-comment">-- clear right immediate (extended mnemonic)</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FADD"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FADD"><span class="hs-identifier hs-var">FADD</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-283"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FSUB"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FSUB"><span class="hs-identifier hs-var">FSUB</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-284"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FMUL"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FMUL"><span class="hs-identifier hs-var">FMUL</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-285"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FDIV"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FDIV"><span class="hs-identifier hs-var">FDIV</span></a></span></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-286"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FABS"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FABS"><span class="hs-identifier hs-var">FABS</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- abs is the same for single and double</span><span>
</span><span id="line-287"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FNEG"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FNEG"><span class="hs-identifier hs-var">FNEG</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- negate is the same for single and double prec.</span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FCMP"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCMP"><span class="hs-identifier hs-var">FCMP</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-290"></span><span>
</span><span id="line-291"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FCTIWZ"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIWZ"><span class="hs-identifier hs-var">FCTIWZ</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- convert to integer word</span><span>
</span><span id="line-292"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FCTIDZ"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIDZ"><span class="hs-identifier hs-var">FCTIDZ</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- convert to integer double word</span><span>
</span><span id="line-293"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FCFID"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCFID"><span class="hs-identifier hs-var">FCFID</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- convert from integer double word</span><span>
</span><span id="line-294"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FRSP"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FRSP"><span class="hs-identifier hs-var">FRSP</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- reduce to single precision</span><span>
</span><span id="line-295"></span><span>                                </span><span class="hs-comment">-- (but destination is a FP register)</span><span>
</span><span id="line-296"></span><span>
</span><span id="line-297"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="CRNOR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CRNOR"><span class="hs-identifier hs-var">CRNOR</span></a></span></span><span>   </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>       </span><span class="hs-comment">-- condition register nor</span><span>
</span><span id="line-298"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MFCR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFCR"><span class="hs-identifier hs-var">MFCR</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- move from condition register</span><span>
</span><span id="line-299"></span><span>
</span><span id="line-300"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="MFLR"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFLR"><span class="hs-identifier hs-var">MFLR</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- move from link register</span><span>
</span><span id="line-301"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="FETCHPC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FETCHPC"><span class="hs-identifier hs-var">FETCHPC</span></a></span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>               </span><span class="hs-comment">-- pseudo-instruction:</span><span>
</span><span id="line-302"></span><span>                                </span><span class="hs-comment">-- bcl to next insn, mflr reg</span><span>
</span><span id="line-303"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="HWSYNC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#HWSYNC"><span class="hs-identifier hs-var">HWSYNC</span></a></span></span><span>                    </span><span class="hs-comment">-- heavy weight sync</span><span>
</span><span id="line-304"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="ISYNC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ISYNC"><span class="hs-identifier hs-var">ISYNC</span></a></span></span><span>                     </span><span class="hs-comment">-- instruction synchronize</span><span>
</span><span id="line-305"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="LWSYNC"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LWSYNC"><span class="hs-identifier hs-var">LWSYNC</span></a></span></span><span>                    </span><span class="hs-comment">-- memory barrier</span><span>
</span><span id="line-306"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="NOP"><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NOP"><span class="hs-identifier hs-var">NOP</span></a></span></span><span>                       </span><span class="hs-comment">-- no operation, PowerPC 64 bit</span><span>
</span><span id="line-307"></span><span>                                </span><span class="hs-comment">-- needs this as place holder to</span><span>
</span><span id="line-308"></span><span>                                </span><span class="hs-comment">-- reload TOC pointer</span><span>
</span><span id="line-309"></span><span>
</span><span id="line-310"></span><span class="hs-comment">-- | Get the registers that are being used by this instruction.</span><span>
</span><span id="line-311"></span><span class="hs-comment">-- regUsage doesn't need to do any trickery for jumps and such.</span><span>
</span><span id="line-312"></span><span class="hs-comment">-- Just state precisely the regs read and written by that insn.</span><span>
</span><span id="line-313"></span><span class="hs-comment">-- The consequences of control flow transfers, as far as register</span><span>
</span><span id="line-314"></span><span class="hs-comment">-- allocation goes, are taken care of by the register allocator.</span><span>
</span><span id="line-315"></span><span class="hs-comment">--</span><span>
</span><span id="line-316"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_regUsageOfInstr"><span class="hs-identifier hs-type">ppc_regUsageOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#RegUsage"><span class="hs-identifier hs-type">RegUsage</span></a></span><span>
</span><span id="line-317"></span><span id="ppc_regUsageOfInstr"><span class="annot"><span class="annottext">ppc_regUsageOfInstr :: Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_regUsageOfInstr"><span class="hs-identifier hs-var hs-var">ppc_regUsageOfInstr</span></a></span></span><span> </span><span id="local-6989586621681027621"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027621"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027620"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027620"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-318"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027620"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-319"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-type">LD</span></a></span><span>      </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027619"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027619"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027618"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027618"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027618"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027619"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-320"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDFAR"><span class="hs-identifier hs-type">LDFAR</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027615"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027615"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027614"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027614"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027614"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027615"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDR"><span class="hs-identifier hs-type">LDR</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027613"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027613"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027612"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027612"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027612"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027613"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-322"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LA"><span class="hs-identifier hs-type">LA</span></a></span><span>      </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027611"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027611"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027610"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027610"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027610"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027611"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-323"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span>      </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027609"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027609"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027608"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027608"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027609"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027608"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-324"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STFAR"><span class="hs-identifier hs-type">STFAR</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027607"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027607"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027606"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027606"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027607"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027606"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-325"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-type">STU</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027605"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027605"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027604"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027604"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027605"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027604"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-326"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STC"><span class="hs-identifier hs-type">STC</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027603"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027603"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027602"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027602"><span class="hs-identifier hs-var">addr</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027603"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027602"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-327"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LIS"><span class="hs-identifier hs-type">LIS</span></a></span><span>     </span><span id="local-6989586621681027601"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027601"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027601"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-328"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LI"><span class="hs-identifier hs-type">LI</span></a></span><span>      </span><span id="local-6989586621681027600"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027600"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027600"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-329"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-type">MR</span></a></span><span>      </span><span id="local-6989586621681027599"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027599"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027598"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027598"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027598"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027599"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-330"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMP"><span class="hs-identifier hs-type">CMP</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027597"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027597"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027596"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027596"><span class="hs-identifier hs-var">ri</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027597"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027596"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-331"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMPL"><span class="hs-identifier hs-type">CMPL</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027594"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027594"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027593"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027593"><span class="hs-identifier hs-var">ri</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027594"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027593"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-332"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span>     </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#noUsage"><span class="hs-identifier hs-var">noUsage</span></a></span><span>
</span><span id="line-333"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span>  </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#noUsage"><span class="hs-identifier hs-var">noUsage</span></a></span><span>
</span><span id="line-334"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span>     </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027591"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027591"><span class="hs-identifier hs-var">regs</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027591"><span class="hs-identifier hs-var">regs</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-335"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MTCTR"><span class="hs-identifier hs-type">MTCTR</span></a></span><span>   </span><span id="local-6989586621681027590"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027590"><span class="hs-identifier hs-var">reg</span></a></span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027590"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-336"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span>    </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027589"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027589"><span class="hs-identifier hs-var">regs</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027589"><span class="hs-identifier hs-var">regs</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-337"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BL"><span class="hs-identifier hs-type">BL</span></a></span><span>      </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027588"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027588"><span class="hs-identifier hs-var">params</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027588"><span class="hs-identifier hs-var">params</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [Reg]
</span><a href="GHC.CmmToAsm.PPC.Regs.html#callClobberedRegs"><span class="hs-identifier hs-var">callClobberedRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027621"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-338"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTRL"><span class="hs-identifier hs-type">BCTRL</span></a></span><span>   </span><span id="local-6989586621681027586"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027586"><span class="hs-identifier hs-var">params</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027586"><span class="hs-identifier hs-var">params</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [Reg]
</span><a href="GHC.CmmToAsm.PPC.Regs.html#callClobberedRegs"><span class="hs-identifier hs-var">callClobberedRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027621"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-339"></span><span>
</span><span id="line-340"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADD"><span class="hs-identifier hs-type">ADD</span></a></span><span>     </span><span id="local-6989586621681027585"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027585"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027584"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027584"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027583"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027583"><span class="hs-identifier hs-var">ri</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027584"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027583"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027585"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-341"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDO"><span class="hs-identifier hs-type">ADDO</span></a></span><span>    </span><span id="local-6989586621681027582"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027582"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027581"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027581"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027580"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027580"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027581"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027580"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027582"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-342"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDC"><span class="hs-identifier hs-type">ADDC</span></a></span><span>    </span><span id="local-6989586621681027579"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027579"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027578"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027578"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027577"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027577"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027578"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027577"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027579"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-343"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDE"><span class="hs-identifier hs-type">ADDE</span></a></span><span>    </span><span id="local-6989586621681027576"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027576"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027575"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027575"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027574"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027574"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027575"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027574"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027576"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-344"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDZE"><span class="hs-identifier hs-type">ADDZE</span></a></span><span>   </span><span id="local-6989586621681027573"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027573"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027572"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027572"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027572"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027573"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-345"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDIS"><span class="hs-identifier hs-type">ADDIS</span></a></span><span>   </span><span id="local-6989586621681027571"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027571"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027570"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027570"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027570"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027571"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-346"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBF"><span class="hs-identifier hs-type">SUBF</span></a></span><span>    </span><span id="local-6989586621681027569"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027569"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027568"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027568"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027567"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027567"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027568"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027567"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027569"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-347"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFO"><span class="hs-identifier hs-type">SUBFO</span></a></span><span>   </span><span id="local-6989586621681027566"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027566"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027565"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027565"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027564"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027564"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027565"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027564"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027566"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-348"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFC"><span class="hs-identifier hs-type">SUBFC</span></a></span><span>   </span><span id="local-6989586621681027563"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027563"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027562"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027562"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027561"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027561"><span class="hs-identifier hs-var">ri</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027562"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027561"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027563"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-349"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFE"><span class="hs-identifier hs-type">SUBFE</span></a></span><span>   </span><span id="local-6989586621681027560"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027560"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027559"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027559"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027558"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027558"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027559"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027558"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027560"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-350"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULL"><span class="hs-identifier hs-type">MULL</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027557"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027557"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027556"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027556"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027555"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027555"><span class="hs-identifier hs-var">ri</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027556"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027555"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027557"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-351"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULLO"><span class="hs-identifier hs-type">MULLO</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027554"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027554"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027553"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027553"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027552"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027552"><span class="hs-identifier hs-var">reg3</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027553"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027552"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027554"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-352"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFOV"><span class="hs-identifier hs-type">MFOV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027551"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027551"><span class="hs-identifier hs-var">reg</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027551"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-353"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULHU"><span class="hs-identifier hs-type">MULHU</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027550"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027550"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027549"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027549"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027548"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027548"><span class="hs-identifier hs-var">reg3</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027549"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027548"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027550"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-354"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DIV"><span class="hs-identifier hs-type">DIV</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027547"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027547"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027546"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027546"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027545"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027545"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>
</span><span id="line-355"></span><span>                             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027546"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027545"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027547"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-356"></span><span>
</span><span id="line-357"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#AND"><span class="hs-identifier hs-type">AND</span></a></span><span>     </span><span id="local-6989586621681027544"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027544"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027543"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027543"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027542"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027542"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027543"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027542"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027544"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-358"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ANDC"><span class="hs-identifier hs-type">ANDC</span></a></span><span>    </span><span id="local-6989586621681027541"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027541"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027540"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027540"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027539"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027539"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027540"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027539"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027541"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-359"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NAND"><span class="hs-identifier hs-type">NAND</span></a></span><span>    </span><span id="local-6989586621681027538"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027538"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027537"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027537"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027536"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027536"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027537"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027536"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027538"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-360"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#OR"><span class="hs-identifier hs-type">OR</span></a></span><span>      </span><span id="local-6989586621681027535"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027535"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027534"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027534"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027533"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027533"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027534"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027533"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027535"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-361"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ORIS"><span class="hs-identifier hs-type">ORIS</span></a></span><span>    </span><span id="local-6989586621681027532"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027532"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027531"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027531"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027531"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027532"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-362"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XOR"><span class="hs-identifier hs-type">XOR</span></a></span><span>     </span><span id="local-6989586621681027530"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027530"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027529"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027529"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027528"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027528"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027529"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027528"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027530"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-363"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XORIS"><span class="hs-identifier hs-type">XORIS</span></a></span><span>   </span><span id="local-6989586621681027527"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027527"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027526"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027526"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027526"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027527"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-364"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#EXTS"><span class="hs-identifier hs-type">EXTS</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span>  </span><span id="local-6989586621681027525"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027525"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027524"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027524"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027524"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027525"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-365"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CNTLZ"><span class="hs-identifier hs-type">CNTLZ</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span>  </span><span id="local-6989586621681027523"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027523"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027522"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027522"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027522"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027523"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-366"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NEG"><span class="hs-identifier hs-type">NEG</span></a></span><span>     </span><span id="local-6989586621681027521"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027521"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027520"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027520"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027520"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027521"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-367"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NOT"><span class="hs-identifier hs-type">NOT</span></a></span><span>     </span><span id="local-6989586621681027519"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027519"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027518"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027518"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027518"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027519"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-368"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SL"><span class="hs-identifier hs-type">SL</span></a></span><span>      </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027517"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027517"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027516"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027516"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027515"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027515"><span class="hs-identifier hs-var">ri</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027516"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027515"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027517"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-369"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SR"><span class="hs-identifier hs-type">SR</span></a></span><span>      </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027514"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027514"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027513"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027513"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027512"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027512"><span class="hs-identifier hs-var">ri</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027513"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027512"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027514"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-370"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SRA"><span class="hs-identifier hs-type">SRA</span></a></span><span>     </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027511"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027511"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027510"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027510"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027509"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027509"><span class="hs-identifier hs-var">ri</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027510"><span class="hs-identifier hs-var">reg2</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027509"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027511"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-371"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RLWINM"><span class="hs-identifier hs-type">RLWINM</span></a></span><span>  </span><span id="local-6989586621681027508"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027508"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027507"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027507"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027507"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027508"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-372"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRLI"><span class="hs-identifier hs-type">CLRLI</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027506"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027506"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027505"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027505"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027505"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027506"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-373"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRRI"><span class="hs-identifier hs-type">CLRRI</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027504"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027504"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027503"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027503"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027503"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027504"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-374"></span><span>
</span><span id="line-375"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FADD"><span class="hs-identifier hs-type">FADD</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027502"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027502"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027501"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027501"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027500"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027500"><span class="hs-identifier hs-var">r3</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027501"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027500"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027502"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-376"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FSUB"><span class="hs-identifier hs-type">FSUB</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027499"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027499"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027498"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027498"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027497"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027497"><span class="hs-identifier hs-var">r3</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027498"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027497"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027499"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-377"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FMUL"><span class="hs-identifier hs-type">FMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027496"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027496"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027495"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027495"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027494"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027494"><span class="hs-identifier hs-var">r3</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027495"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027494"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027496"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-378"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FDIV"><span class="hs-identifier hs-type">FDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027493"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027493"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027492"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027492"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027491"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027491"><span class="hs-identifier hs-var">r3</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027492"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027491"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027493"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-379"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FABS"><span class="hs-identifier hs-type">FABS</span></a></span><span>    </span><span id="local-6989586621681027490"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027490"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027489"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027489"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027489"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027490"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-380"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FNEG"><span class="hs-identifier hs-type">FNEG</span></a></span><span>    </span><span id="local-6989586621681027488"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027488"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027487"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027487"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027487"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027488"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-381"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCMP"><span class="hs-identifier hs-type">FCMP</span></a></span><span>    </span><span id="local-6989586621681027486"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027486"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027485"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027485"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027486"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027485"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-382"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIWZ"><span class="hs-identifier hs-type">FCTIWZ</span></a></span><span>  </span><span id="local-6989586621681027484"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027484"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027483"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027483"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027483"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027484"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-383"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIDZ"><span class="hs-identifier hs-type">FCTIDZ</span></a></span><span>  </span><span id="local-6989586621681027482"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027482"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027481"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027481"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027481"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027482"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-384"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCFID"><span class="hs-identifier hs-type">FCFID</span></a></span><span>   </span><span id="local-6989586621681027480"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027480"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027479"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027479"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027479"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027480"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-385"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FRSP"><span class="hs-identifier hs-type">FRSP</span></a></span><span>    </span><span id="local-6989586621681027478"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027478"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027477"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027477"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027477"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027478"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-386"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFCR"><span class="hs-identifier hs-type">MFCR</span></a></span><span>    </span><span id="local-6989586621681027476"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027476"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027476"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-387"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFLR"><span class="hs-identifier hs-type">MFLR</span></a></span><span>    </span><span id="local-6989586621681027475"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027475"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027475"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-388"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FETCHPC"><span class="hs-identifier hs-type">FETCHPC</span></a></span><span> </span><span id="local-6989586621681027474"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027474"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027474"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-389"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#noUsage"><span class="hs-identifier hs-var">noUsage</span></a></span><span>
</span><span id="line-390"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-391"></span><span>    </span><span id="local-6989586621681027617"><span class="annot"><span class="annottext">usage :: ([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681027617"><span class="hs-identifier hs-var hs-var">usage</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681027473"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027473"><span class="hs-identifier hs-var">src</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681027472"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027472"><span class="hs-identifier hs-var">dst</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Reg] -&gt; [Reg] -&gt; RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#RU"><span class="hs-identifier hs-var">RU</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Reg -&gt; Bool) -&gt; [Reg] -&gt; [Reg]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027621"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027473"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-392"></span><span>                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Reg -&gt; Bool) -&gt; [Reg] -&gt; [Reg]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027621"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027472"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-393"></span><span>    </span><span id="local-6989586621681027616"><span class="annot"><span class="annottext">regAddr :: AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681027616"><span class="hs-identifier hs-var hs-var">regAddr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegReg"><span class="hs-identifier hs-type">AddrRegReg</span></a></span><span> </span><span id="local-6989586621681027469"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027469"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027468"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027468"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027469"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027468"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-394"></span><span>    </span><span class="annot"><a href="#local-6989586621681027616"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-type">AddrRegImm</span></a></span><span> </span><span id="local-6989586621681027467"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027467"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027467"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-395"></span><span>
</span><span id="line-396"></span><span>    </span><span id="local-6989586621681027595"><span class="annot"><span class="annottext">regRI :: RI -&gt; [Reg]
</span><a href="#local-6989586621681027595"><span class="hs-identifier hs-var hs-var">regRI</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span id="local-6989586621681027466"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027466"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027466"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-397"></span><span>    </span><span class="annot"><a href="#local-6989586621681027595"><span class="hs-identifier hs-var">regRI</span></a></span><span>  </span><span class="annot"><span class="annottext">RI
</span><span class="hs-identifier">_</span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-398"></span><span>
</span><span id="line-399"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-type">interesting</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-400"></span><span id="interesting"><span class="annot"><span class="annottext">interesting :: Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-var hs-var">interesting</span></a></span></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RegVirtual"><span class="hs-identifier hs-type">RegVirtual</span></a></span><span> </span><span class="annot"><span class="annottext">VirtualReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-401"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span id="local-6989586621681027464"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027464"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RegReal"><span class="hs-identifier hs-type">RegReal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RealRegSingle"><span class="hs-identifier hs-type">RealRegSingle</span></a></span><span> </span><span id="local-6989586621681027461"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027461"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Bool
</span><a href="GHC.Platform.Regs.html#freeReg"><span class="hs-identifier hs-var">freeReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027464"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027461"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-402"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RegReal"><span class="hs-identifier hs-type">RegReal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RealRegPair"><span class="hs-identifier hs-type">RealRegPair</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-403"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Bool
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PPC.Instr.interesting: no reg pairs on this arch&quot;</span></span><span>
</span><span id="line-404"></span><span>
</span><span id="line-405"></span><span>
</span><span id="line-406"></span><span>
</span><span id="line-407"></span><span class="hs-comment">-- | Apply a given mapping to all the register references in this</span><span>
</span><span id="line-408"></span><span class="hs-comment">-- instruction.</span><span>
</span><span id="line-409"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchRegsOfInstr"><span class="hs-identifier hs-type">ppc_patchRegsOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-410"></span><span id="ppc_patchRegsOfInstr"><span class="annot"><span class="annottext">ppc_patchRegsOfInstr :: Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchRegsOfInstr"><span class="hs-identifier hs-var hs-var">ppc_patchRegsOfInstr</span></a></span></span><span> </span><span id="local-6989586621681027457"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027457"><span class="hs-identifier hs-var">instr</span></a></span></span><span> </span><span id="local-6989586621681027456"><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span></span><span>
</span><span id="line-411"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027457"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-412"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-type">LD</span></a></span><span>      </span><span id="local-6989586621681027455"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027455"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027454"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027454"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027453"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027453"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027455"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027454"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027453"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-413"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDFAR"><span class="hs-identifier hs-type">LDFAR</span></a></span><span>   </span><span id="local-6989586621681027451"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027451"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027450"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027450"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027449"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027449"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LDFAR"><span class="hs-identifier hs-var">LDFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027451"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027450"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027449"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-414"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDR"><span class="hs-identifier hs-type">LDR</span></a></span><span>     </span><span id="local-6989586621681027448"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027448"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027447"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027447"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027446"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027446"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LDR"><span class="hs-identifier hs-var">LDR</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027448"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027447"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027446"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-415"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LA"><span class="hs-identifier hs-type">LA</span></a></span><span>      </span><span id="local-6989586621681027445"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027445"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027444"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027444"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027443"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027443"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LA"><span class="hs-identifier hs-var">LA</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027445"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027444"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027443"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-416"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span>      </span><span id="local-6989586621681027442"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027442"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027441"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027441"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027440"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027440"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027442"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027441"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027440"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-417"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STFAR"><span class="hs-identifier hs-type">STFAR</span></a></span><span>   </span><span id="local-6989586621681027439"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027439"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027438"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027438"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027437"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027437"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STFAR"><span class="hs-identifier hs-var">STFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027439"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027438"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027437"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-418"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-type">STU</span></a></span><span>     </span><span id="local-6989586621681027436"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027436"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027435"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027435"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027434"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027434"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STU"><span class="hs-identifier hs-var">STU</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027436"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027435"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027434"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-419"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#STC"><span class="hs-identifier hs-type">STC</span></a></span><span>     </span><span id="local-6989586621681027433"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027433"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027432"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027432"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027431"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027431"><span class="hs-identifier hs-var">addr</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STC"><span class="hs-identifier hs-var">STC</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027433"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027432"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681027431"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-420"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LIS"><span class="hs-identifier hs-type">LIS</span></a></span><span>     </span><span id="local-6989586621681027430"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027430"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027429"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027429"><span class="hs-identifier hs-var">imm</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LIS"><span class="hs-identifier hs-var">LIS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027430"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027429"><span class="hs-identifier hs-var">imm</span></a></span><span>
</span><span id="line-421"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LI"><span class="hs-identifier hs-type">LI</span></a></span><span>      </span><span id="local-6989586621681027428"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027428"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027427"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027427"><span class="hs-identifier hs-var">imm</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LI"><span class="hs-identifier hs-var">LI</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027428"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027427"><span class="hs-identifier hs-var">imm</span></a></span><span>
</span><span id="line-422"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-type">MR</span></a></span><span>      </span><span id="local-6989586621681027426"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027426"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027425"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027425"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-var">MR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027426"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027425"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-423"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMP"><span class="hs-identifier hs-type">CMP</span></a></span><span>     </span><span id="local-6989586621681027424"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027424"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027423"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027423"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027422"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027422"><span class="hs-identifier hs-var">ri</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#CMP"><span class="hs-identifier hs-var">CMP</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027424"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027423"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027422"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-424"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CMPL"><span class="hs-identifier hs-type">CMPL</span></a></span><span>    </span><span id="local-6989586621681027420"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027420"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027419"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027419"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027418"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027418"><span class="hs-identifier hs-var">ri</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#CMPL"><span class="hs-identifier hs-var">CMPL</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027420"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027419"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027418"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-425"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span>     </span><span id="local-6989586621681027417"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027417"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621681027416"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027416"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681027415"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027415"><span class="hs-identifier hs-var">p</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027417"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027416"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027415"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-426"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span>  </span><span id="local-6989586621681027414"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027414"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621681027413"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027413"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681027412"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027412"><span class="hs-identifier hs-var">p</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-var">BCCFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027414"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027413"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027412"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-427"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span>     </span><span id="local-6989586621681027411"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027411"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span id="local-6989586621681027410"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027410"><span class="hs-identifier hs-var">regs</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; [Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-var">JMP</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027411"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027410"><span class="hs-identifier hs-var">regs</span></a></span><span> </span><span class="hs-comment">-- global regs will not be remapped</span><span>
</span><span id="line-428"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MTCTR"><span class="hs-identifier hs-type">MTCTR</span></a></span><span>   </span><span id="local-6989586621681027409"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027409"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MTCTR"><span class="hs-identifier hs-var">MTCTR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027409"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-429"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span>    </span><span id="local-6989586621681027408"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027408"><span class="hs-identifier hs-var">targets</span></a></span></span><span> </span><span id="local-6989586621681027407"><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027407"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681027406"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027406"><span class="hs-identifier hs-var">rs</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId] -&gt; Maybe CLabel -&gt; [Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-var">BCTR</span></a></span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027408"><span class="hs-identifier hs-var">targets</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027407"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027406"><span class="hs-identifier hs-var">rs</span></a></span><span>
</span><span id="line-430"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BL"><span class="hs-identifier hs-type">BL</span></a></span><span>      </span><span id="local-6989586621681027405"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027405"><span class="hs-identifier hs-var">imm</span></a></span></span><span> </span><span id="local-6989586621681027404"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027404"><span class="hs-identifier hs-var">argRegs</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; [Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BL"><span class="hs-identifier hs-var">BL</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681027405"><span class="hs-identifier hs-var">imm</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027404"><span class="hs-identifier hs-var">argRegs</span></a></span><span>    </span><span class="hs-comment">-- argument regs</span><span>
</span><span id="line-431"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTRL"><span class="hs-identifier hs-type">BCTRL</span></a></span><span>   </span><span id="local-6989586621681027403"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027403"><span class="hs-identifier hs-var">argRegs</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCTRL"><span class="hs-identifier hs-var">BCTRL</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027403"><span class="hs-identifier hs-var">argRegs</span></a></span><span>     </span><span class="hs-comment">-- cannot be remapped</span><span>
</span><span id="line-432"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADD"><span class="hs-identifier hs-type">ADD</span></a></span><span>     </span><span id="local-6989586621681027402"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027402"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027401"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027401"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027400"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027400"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027402"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027401"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027400"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-433"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDO"><span class="hs-identifier hs-type">ADDO</span></a></span><span>    </span><span id="local-6989586621681027399"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027399"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027398"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027398"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027397"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027397"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDO"><span class="hs-identifier hs-var">ADDO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027399"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027398"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027397"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-434"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDC"><span class="hs-identifier hs-type">ADDC</span></a></span><span>    </span><span id="local-6989586621681027396"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027396"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027395"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027395"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027394"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027394"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDC"><span class="hs-identifier hs-var">ADDC</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027396"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027395"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027394"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-435"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDE"><span class="hs-identifier hs-type">ADDE</span></a></span><span>    </span><span id="local-6989586621681027393"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027393"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027392"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027392"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027391"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027391"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDE"><span class="hs-identifier hs-var">ADDE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027393"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027392"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027391"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-436"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDZE"><span class="hs-identifier hs-type">ADDZE</span></a></span><span>   </span><span id="local-6989586621681027390"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027390"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027389"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027389"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDZE"><span class="hs-identifier hs-var">ADDZE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027390"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027389"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-437"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ADDIS"><span class="hs-identifier hs-type">ADDIS</span></a></span><span>   </span><span id="local-6989586621681027388"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027388"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027387"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027387"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027386"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027386"><span class="hs-identifier hs-var">imm</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ADDIS"><span class="hs-identifier hs-var">ADDIS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027388"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027387"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027386"><span class="hs-identifier hs-var">imm</span></a></span><span>
</span><span id="line-438"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBF"><span class="hs-identifier hs-type">SUBF</span></a></span><span>    </span><span id="local-6989586621681027385"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027385"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027384"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027384"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027383"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027383"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SUBF"><span class="hs-identifier hs-var">SUBF</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027385"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027384"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027383"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-439"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFO"><span class="hs-identifier hs-type">SUBFO</span></a></span><span>   </span><span id="local-6989586621681027382"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027382"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027381"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027381"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027380"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027380"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFO"><span class="hs-identifier hs-var">SUBFO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027382"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027381"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027380"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-440"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFC"><span class="hs-identifier hs-type">SUBFC</span></a></span><span>   </span><span id="local-6989586621681027379"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027379"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027378"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027378"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027377"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027377"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFC"><span class="hs-identifier hs-var">SUBFC</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027379"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027378"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027377"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-441"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFE"><span class="hs-identifier hs-type">SUBFE</span></a></span><span>   </span><span id="local-6989586621681027376"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027376"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027375"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027375"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027374"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027374"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SUBFE"><span class="hs-identifier hs-var">SUBFE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027376"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027375"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027374"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-442"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULL"><span class="hs-identifier hs-type">MULL</span></a></span><span>    </span><span id="local-6989586621681027373"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027373"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027372"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027372"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027371"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027371"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027370"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027370"><span class="hs-identifier hs-var">ri</span></a></span></span><span>
</span><span id="line-443"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MULL"><span class="hs-identifier hs-var">MULL</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027373"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027372"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027371"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027370"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-444"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULLO"><span class="hs-identifier hs-type">MULLO</span></a></span><span>   </span><span id="local-6989586621681027369"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027369"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027368"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027368"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027367"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027367"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027366"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027366"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>
</span><span id="line-445"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MULLO"><span class="hs-identifier hs-var">MULLO</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027369"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027368"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027367"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027366"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-446"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFOV"><span class="hs-identifier hs-type">MFOV</span></a></span><span>    </span><span id="local-6989586621681027365"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027365"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027364"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027364"><span class="hs-identifier hs-var">reg</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MFOV"><span class="hs-identifier hs-var">MFOV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027365"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027364"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-447"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MULHU"><span class="hs-identifier hs-type">MULHU</span></a></span><span>   </span><span id="local-6989586621681027363"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027363"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027362"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027362"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027361"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027361"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027360"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027360"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>
</span><span id="line-448"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MULHU"><span class="hs-identifier hs-var">MULHU</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027363"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027362"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027361"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027360"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-449"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DIV"><span class="hs-identifier hs-type">DIV</span></a></span><span>     </span><span id="local-6989586621681027359"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027359"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027358"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681027358"><span class="hs-identifier hs-var">sgn</span></a></span></span><span> </span><span id="local-6989586621681027357"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027357"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027356"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027356"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027355"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027355"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>
</span><span id="line-450"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Bool -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#DIV"><span class="hs-identifier hs-var">DIV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027359"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681027358"><span class="hs-identifier hs-var">sgn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027357"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027356"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027355"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-451"></span><span>
</span><span id="line-452"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#AND"><span class="hs-identifier hs-type">AND</span></a></span><span>     </span><span id="local-6989586621681027354"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027354"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027353"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027353"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027352"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027352"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#AND"><span class="hs-identifier hs-var">AND</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027354"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027353"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027352"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-453"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ANDC"><span class="hs-identifier hs-type">ANDC</span></a></span><span>    </span><span id="local-6989586621681027351"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027351"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027350"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027350"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027349"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027349"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ANDC"><span class="hs-identifier hs-var">ANDC</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027351"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027350"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027349"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-454"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NAND"><span class="hs-identifier hs-type">NAND</span></a></span><span>    </span><span id="local-6989586621681027348"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027348"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027347"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027347"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027346"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027346"><span class="hs-identifier hs-var">reg3</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#NAND"><span class="hs-identifier hs-var">NAND</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027348"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027347"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027346"><span class="hs-identifier hs-var">reg3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-455"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#OR"><span class="hs-identifier hs-type">OR</span></a></span><span>      </span><span id="local-6989586621681027345"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027345"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027344"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027344"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027343"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027343"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#OR"><span class="hs-identifier hs-var">OR</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027345"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027344"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027343"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-456"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ORIS"><span class="hs-identifier hs-type">ORIS</span></a></span><span>    </span><span id="local-6989586621681027342"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027342"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027341"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027341"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027340"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027340"><span class="hs-identifier hs-var">imm</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ORIS"><span class="hs-identifier hs-var">ORIS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027342"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027341"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027340"><span class="hs-identifier hs-var">imm</span></a></span><span>
</span><span id="line-457"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XOR"><span class="hs-identifier hs-type">XOR</span></a></span><span>     </span><span id="local-6989586621681027339"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027339"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027338"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027338"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027337"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027337"><span class="hs-identifier hs-var">ri</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#XOR"><span class="hs-identifier hs-var">XOR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027339"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027338"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027337"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-458"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#XORIS"><span class="hs-identifier hs-type">XORIS</span></a></span><span>   </span><span id="local-6989586621681027336"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027336"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027335"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027335"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027334"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027334"><span class="hs-identifier hs-var">imm</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Imm -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#XORIS"><span class="hs-identifier hs-var">XORIS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027336"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027335"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027334"><span class="hs-identifier hs-var">imm</span></a></span><span>
</span><span id="line-459"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#EXTS"><span class="hs-identifier hs-type">EXTS</span></a></span><span>    </span><span id="local-6989586621681027333"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027333"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027332"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027332"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027331"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027331"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#EXTS"><span class="hs-identifier hs-var">EXTS</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027333"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027332"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027331"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-460"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CNTLZ"><span class="hs-identifier hs-type">CNTLZ</span></a></span><span>   </span><span id="local-6989586621681027330"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027330"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027329"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027329"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027328"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027328"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#CNTLZ"><span class="hs-identifier hs-var">CNTLZ</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027330"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027329"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027328"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-461"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NEG"><span class="hs-identifier hs-type">NEG</span></a></span><span>     </span><span id="local-6989586621681027327"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027327"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027326"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027326"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#NEG"><span class="hs-identifier hs-var">NEG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027327"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027326"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-462"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NOT"><span class="hs-identifier hs-type">NOT</span></a></span><span>     </span><span id="local-6989586621681027325"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027325"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027324"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027324"><span class="hs-identifier hs-var">reg2</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#NOT"><span class="hs-identifier hs-var">NOT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027325"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027324"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-463"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SL"><span class="hs-identifier hs-type">SL</span></a></span><span>      </span><span id="local-6989586621681027323"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027323"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027322"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027322"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027321"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027321"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027320"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027320"><span class="hs-identifier hs-var">ri</span></a></span></span><span>
</span><span id="line-464"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SL"><span class="hs-identifier hs-var">SL</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027323"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027322"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027321"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027320"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-465"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SR"><span class="hs-identifier hs-type">SR</span></a></span><span>      </span><span id="local-6989586621681027319"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027319"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027318"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027318"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027317"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027317"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027316"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027316"><span class="hs-identifier hs-var">ri</span></a></span></span><span>
</span><span id="line-466"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SR"><span class="hs-identifier hs-var">SR</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027319"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027318"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027317"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027316"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-467"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#SRA"><span class="hs-identifier hs-type">SRA</span></a></span><span>     </span><span id="local-6989586621681027315"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027315"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027314"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027314"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027313"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027313"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027312"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027312"><span class="hs-identifier hs-var">ri</span></a></span></span><span>
</span><span id="line-468"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; RI -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#SRA"><span class="hs-identifier hs-var">SRA</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027315"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027314"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027313"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027312"><span class="hs-identifier hs-var">ri</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-469"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RLWINM"><span class="hs-identifier hs-type">RLWINM</span></a></span><span>  </span><span id="local-6989586621681027311"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027311"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027310"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027310"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027309"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027309"><span class="hs-identifier hs-var">sh</span></a></span></span><span> </span><span id="local-6989586621681027308"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027308"><span class="hs-identifier hs-var">mb</span></a></span></span><span> </span><span id="local-6989586621681027307"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027307"><span class="hs-identifier hs-var">me</span></a></span></span><span>
</span><span id="line-470"></span><span>                            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Int -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#RLWINM"><span class="hs-identifier hs-var">RLWINM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027311"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027310"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027309"><span class="hs-identifier hs-var">sh</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027308"><span class="hs-identifier hs-var">mb</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027307"><span class="hs-identifier hs-var">me</span></a></span><span>
</span><span id="line-471"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRLI"><span class="hs-identifier hs-type">CLRLI</span></a></span><span>   </span><span id="local-6989586621681027306"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027306"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027305"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027305"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027304"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027304"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027303"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027303"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#CLRLI"><span class="hs-identifier hs-var">CLRLI</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027306"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027305"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027304"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027303"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-472"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#CLRRI"><span class="hs-identifier hs-type">CLRRI</span></a></span><span>   </span><span id="local-6989586621681027302"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027302"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027301"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027301"><span class="hs-identifier hs-var">reg1</span></a></span></span><span> </span><span id="local-6989586621681027300"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027300"><span class="hs-identifier hs-var">reg2</span></a></span></span><span> </span><span id="local-6989586621681027299"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027299"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#CLRRI"><span class="hs-identifier hs-var">CLRRI</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027302"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027301"><span class="hs-identifier hs-var">reg1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027300"><span class="hs-identifier hs-var">reg2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027299"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-473"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FADD"><span class="hs-identifier hs-type">FADD</span></a></span><span>    </span><span id="local-6989586621681027298"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027298"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027297"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027297"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027296"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027296"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027295"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027295"><span class="hs-identifier hs-var">r3</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FADD"><span class="hs-identifier hs-var">FADD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027298"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027297"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027296"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027295"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-474"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FSUB"><span class="hs-identifier hs-type">FSUB</span></a></span><span>    </span><span id="local-6989586621681027294"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027294"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027293"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027293"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027292"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027292"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027291"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027291"><span class="hs-identifier hs-var">r3</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FSUB"><span class="hs-identifier hs-var">FSUB</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027294"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027293"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027292"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027291"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-475"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FMUL"><span class="hs-identifier hs-type">FMUL</span></a></span><span>    </span><span id="local-6989586621681027290"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027290"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027289"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027289"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027288"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027288"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027287"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027287"><span class="hs-identifier hs-var">r3</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FMUL"><span class="hs-identifier hs-var">FMUL</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027290"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027289"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027288"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027287"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-476"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FDIV"><span class="hs-identifier hs-type">FDIV</span></a></span><span>    </span><span id="local-6989586621681027286"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027286"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681027285"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027285"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027284"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027284"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681027283"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027283"><span class="hs-identifier hs-var">r3</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FDIV"><span class="hs-identifier hs-var">FDIV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027286"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027285"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027284"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027283"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-477"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FABS"><span class="hs-identifier hs-type">FABS</span></a></span><span>    </span><span id="local-6989586621681027282"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027282"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027281"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027281"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FABS"><span class="hs-identifier hs-var">FABS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027282"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027281"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-478"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FNEG"><span class="hs-identifier hs-type">FNEG</span></a></span><span>    </span><span id="local-6989586621681027280"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027280"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027279"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027279"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FNEG"><span class="hs-identifier hs-var">FNEG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027280"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027279"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-479"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCMP"><span class="hs-identifier hs-type">FCMP</span></a></span><span>    </span><span id="local-6989586621681027278"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027278"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027277"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027277"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FCMP"><span class="hs-identifier hs-var">FCMP</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027278"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027277"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-480"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIWZ"><span class="hs-identifier hs-type">FCTIWZ</span></a></span><span>  </span><span id="local-6989586621681027276"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027276"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027275"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027275"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIWZ"><span class="hs-identifier hs-var">FCTIWZ</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027276"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027275"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-481"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIDZ"><span class="hs-identifier hs-type">FCTIDZ</span></a></span><span>  </span><span id="local-6989586621681027274"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027274"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027273"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027273"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FCTIDZ"><span class="hs-identifier hs-var">FCTIDZ</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027274"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027273"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-482"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FCFID"><span class="hs-identifier hs-type">FCFID</span></a></span><span>   </span><span id="local-6989586621681027272"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027272"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027271"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027271"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FCFID"><span class="hs-identifier hs-var">FCFID</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027272"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027271"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-483"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FRSP"><span class="hs-identifier hs-type">FRSP</span></a></span><span>    </span><span id="local-6989586621681027270"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027270"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027269"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027269"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FRSP"><span class="hs-identifier hs-var">FRSP</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027270"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027269"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-484"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFCR"><span class="hs-identifier hs-type">MFCR</span></a></span><span>    </span><span id="local-6989586621681027268"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027268"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MFCR"><span class="hs-identifier hs-var">MFCR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027268"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-485"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MFLR"><span class="hs-identifier hs-type">MFLR</span></a></span><span>    </span><span id="local-6989586621681027267"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027267"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MFLR"><span class="hs-identifier hs-var">MFLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027267"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-486"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#FETCHPC"><span class="hs-identifier hs-type">FETCHPC</span></a></span><span> </span><span id="local-6989586621681027266"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027266"><span class="hs-identifier hs-var">reg</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#FETCHPC"><span class="hs-identifier hs-var">FETCHPC</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027266"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-487"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027457"><span class="hs-identifier hs-var">instr</span></a></span><span>
</span><span id="line-488"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-489"></span><span>    </span><span id="local-6989586621681027452"><span class="annot"><span class="annottext">fixAddr :: AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681027452"><span class="hs-identifier hs-var hs-var">fixAddr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegReg"><span class="hs-identifier hs-type">AddrRegReg</span></a></span><span> </span><span id="local-6989586621681027265"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027265"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027264"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027264"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegReg"><span class="hs-identifier hs-var">AddrRegReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027265"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027264"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-490"></span><span>    </span><span class="annot"><a href="#local-6989586621681027452"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-type">AddrRegImm</span></a></span><span> </span><span id="local-6989586621681027263"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027263"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681027262"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027262"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027263"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681027262"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-491"></span><span>
</span><span id="line-492"></span><span>    </span><span id="local-6989586621681027421"><span class="annot"><span class="annottext">fixRI :: RI -&gt; RI
</span><a href="#local-6989586621681027421"><span class="hs-identifier hs-var hs-var">fixRI</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span id="local-6989586621681027261"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027261"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; RI
</span><a href="GHC.CmmToAsm.PPC.Instr.html#RIReg"><span class="hs-identifier hs-var">RIReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681027456"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027261"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-493"></span><span>    </span><span class="annot"><a href="#local-6989586621681027421"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span id="local-6989586621681027260"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027260"><span class="hs-identifier hs-var">other</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681027260"><span class="hs-identifier hs-var">other</span></a></span><span>
</span><span id="line-494"></span><span>
</span><span id="line-495"></span><span>
</span><span id="line-496"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-497"></span><span class="hs-comment">-- | Checks whether this instruction is a jump/branch instruction.</span><span>
</span><span id="line-498"></span><span class="hs-comment">-- One that can change the flow of control in a way that the</span><span>
</span><span id="line-499"></span><span class="hs-comment">-- register allocator needs to worry about.</span><span>
</span><span id="line-500"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isJumpishInstr"><span class="hs-identifier hs-type">ppc_isJumpishInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-501"></span><span id="ppc_isJumpishInstr"><span class="annot"><span class="annottext">ppc_isJumpishInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isJumpishInstr"><span class="hs-identifier hs-var hs-var">ppc_isJumpishInstr</span></a></span></span><span> </span><span id="local-6989586621681027259"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027259"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-502"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027259"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-503"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-504"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-505"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-506"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTRL"><span class="hs-identifier hs-type">BCTRL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-507"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BL"><span class="hs-identifier hs-type">BL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-508"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-509"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-510"></span><span>
</span><span id="line-511"></span><span>
</span><span id="line-512"></span><span class="hs-comment">-- | Checks whether this instruction is a jump/branch instruction.</span><span>
</span><span id="line-513"></span><span class="hs-comment">-- One that can change the flow of control in a way that the</span><span>
</span><span id="line-514"></span><span class="hs-comment">-- register allocator needs to worry about.</span><span>
</span><span id="line-515"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_jumpDestsOfInstr"><span class="hs-identifier hs-type">ppc_jumpDestsOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-516"></span><span id="ppc_jumpDestsOfInstr"><span class="annot"><span class="annottext">ppc_jumpDestsOfInstr :: Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_jumpDestsOfInstr"><span class="hs-identifier hs-var hs-var">ppc_jumpDestsOfInstr</span></a></span></span><span> </span><span id="local-6989586621681027258"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027258"><span class="hs-identifier hs-var">insn</span></a></span></span><span>
</span><span id="line-517"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027258"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-518"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027257"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027257"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027257"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-519"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027256"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027256"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027256"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-520"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span> </span><span id="local-6989586621681027255"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027255"><span class="hs-identifier hs-var">targets</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027254"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681027254"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027254"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027255"><span class="hs-identifier hs-var">targets</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-521"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-522"></span><span>
</span><span id="line-523"></span><span>
</span><span id="line-524"></span><span class="hs-comment">-- | Change the destination of this jump instruction.</span><span>
</span><span id="line-525"></span><span class="hs-comment">-- Used in the linear allocator when adding fixup blocks for join</span><span>
</span><span id="line-526"></span><span class="hs-comment">-- points.</span><span>
</span><span id="line-527"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchJumpInstr"><span class="hs-identifier hs-type">ppc_patchJumpInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-528"></span><span id="ppc_patchJumpInstr"><span class="annot"><span class="annottext">ppc_patchJumpInstr :: Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_patchJumpInstr"><span class="hs-identifier hs-var hs-var">ppc_patchJumpInstr</span></a></span></span><span> </span><span id="local-6989586621681027253"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027253"><span class="hs-identifier hs-var">insn</span></a></span></span><span> </span><span id="local-6989586621681027252"><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027252"><span class="hs-identifier hs-var">patchF</span></a></span></span><span>
</span><span id="line-529"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027253"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-530"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span> </span><span id="local-6989586621681027251"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027251"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681027250"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027250"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span id="local-6989586621681027249"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027249"><span class="hs-identifier hs-var">p</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027251"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027252"><span class="hs-identifier hs-var">patchF</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027250"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027249"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-531"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-type">BCCFAR</span></a></span><span> </span><span id="local-6989586621681027248"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027248"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681027247"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027247"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span id="local-6989586621681027246"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027246"><span class="hs-identifier hs-var">p</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-var">BCCFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027248"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027252"><span class="hs-identifier hs-var">patchF</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027247"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027246"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-532"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-type">BCTR</span></a></span><span> </span><span id="local-6989586621681027245"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027245"><span class="hs-identifier hs-var">ids</span></a></span></span><span> </span><span id="local-6989586621681027244"><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027244"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681027243"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027243"><span class="hs-identifier hs-var">rs</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId] -&gt; Maybe CLabel -&gt; [Reg] -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCTR"><span class="hs-identifier hs-var">BCTR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Maybe BlockId -&gt; Maybe BlockId)
-&gt; [Maybe BlockId] -&gt; [Maybe BlockId]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BlockId -&gt; BlockId) -&gt; Maybe BlockId -&gt; Maybe BlockId
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681027252"><span class="hs-identifier hs-var">patchF</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681027245"><span class="hs-identifier hs-var">ids</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681027244"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681027243"><span class="hs-identifier hs-var">rs</span></a></span><span>
</span><span id="line-533"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027253"><span class="hs-identifier hs-var">insn</span></a></span><span>
</span><span id="line-534"></span><span>
</span><span id="line-535"></span><span>
</span><span id="line-536"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span class="hs-comment">-- | An instruction to spill a register into a spill slot.</span><span>
</span><span id="line-539"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkSpillInstr"><span class="hs-identifier hs-type">ppc_mkSpillInstr</span></a></span><span>
</span><span id="line-540"></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html#NCGConfig"><span class="hs-identifier hs-type">NCGConfig</span></a></span><span>
</span><span id="line-541"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>       </span><span class="hs-comment">-- register to spill</span><span>
</span><span id="line-542"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>       </span><span class="hs-comment">-- current stack delta</span><span>
</span><span id="line-543"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>       </span><span class="hs-comment">-- spill slot to use</span><span>
</span><span id="line-544"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-545"></span><span>
</span><span id="line-546"></span><span id="ppc_mkSpillInstr"><span class="annot"><span class="annottext">ppc_mkSpillInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkSpillInstr"><span class="hs-identifier hs-var hs-var">ppc_mkSpillInstr</span></a></span></span><span> </span><span id="local-6989586621681027242"><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027242"><span class="hs-identifier hs-var">config</span></a></span></span><span> </span><span id="local-6989586621681027241"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027241"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027240"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027240"><span class="hs-identifier hs-var">delta</span></a></span></span><span> </span><span id="local-6989586621681027239"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027239"><span class="hs-identifier hs-var">slot</span></a></span></span><span>
</span><span id="line-547"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681027238"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681027238"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Platform
</span><a href="GHC.CmmToAsm.Config.html#ncgPlatform"><span class="hs-identifier hs-var hs-var">ncgPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027242"><span class="hs-identifier hs-var">config</span></a></span><span>
</span><span id="line-548"></span><span>        </span><span id="local-6989586621681027236"><span class="annot"><span class="annottext">off :: Int
</span><a href="#local-6989586621681027236"><span class="hs-identifier hs-var hs-var">off</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotToOffset"><span class="hs-identifier hs-var">spillSlotToOffset</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027238"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027239"><span class="hs-identifier hs-var">slot</span></a></span><span>
</span><span id="line-549"></span><span>        </span><span id="local-6989586621681027234"><span class="annot"><span class="annottext">arch :: Arch
</span><a href="#local-6989586621681027234"><span class="hs-identifier hs-var hs-var">arch</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformArch"><span class="hs-identifier hs-var">platformArch</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027238"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-550"></span><span>    </span><span class="hs-keyword">in</span><span>
</span><span id="line-551"></span><span>    </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681027232"><span class="annot"><span class="annottext">fmt :: Format
</span><a href="#local-6989586621681027232"><span class="hs-identifier hs-var hs-var">fmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027238"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027241"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-552"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcInteger"><span class="hs-identifier hs-var">RcInteger</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="#local-6989586621681027234"><span class="hs-identifier hs-var">arch</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-553"></span><span>                                </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchPPC"><span class="hs-identifier hs-var">ArchPPC</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II32"><span class="hs-identifier hs-var">II32</span></a></span><span>
</span><span id="line-554"></span><span>                                </span><span class="annot"><span class="annottext">Arch
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II64"><span class="hs-identifier hs-var">II64</span></a></span><span>
</span><span id="line-555"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcDouble"><span class="hs-identifier hs-var">RcDouble</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span>
</span><span id="line-556"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><span class="hs-identifier">_</span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; Format
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PPC.Instr.mkSpillInstr: no match&quot;</span></span><span>
</span><span id="line-557"></span><span>        </span><span id="local-6989586621681027224"><span class="annot"><span class="annottext">instr :: Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="#local-6989586621681027224"><span class="hs-identifier hs-var hs-var">instr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Width -&gt; Bool -&gt; Int -&gt; Maybe Imm
forall a. Integral a =&gt; Width -&gt; Bool -&gt; a -&gt; Maybe Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#makeImmediate"><span class="hs-identifier hs-var">makeImmediate</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027236"><span class="hs-identifier hs-var">off</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027240"><span class="hs-identifier hs-var">delta</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-558"></span><span>                </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span><span>
</span><span id="line-559"></span><span>                </span><span class="annot"><span class="annottext">Maybe Imm
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#STFAR"><span class="hs-identifier hs-var">STFAR</span></a></span><span> </span><span class="hs-comment">-- pseudo instruction: 32 bit offsets</span><span>
</span><span id="line-560"></span><span>
</span><span id="line-561"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="#local-6989586621681027224"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027232"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027241"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027236"><span class="hs-identifier hs-var">off</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027240"><span class="hs-identifier hs-var">delta</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-562"></span><span>
</span><span id="line-563"></span><span>
</span><span id="line-564"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkLoadInstr"><span class="hs-identifier hs-type">ppc_mkLoadInstr</span></a></span><span>
</span><span id="line-565"></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html#NCGConfig"><span class="hs-identifier hs-type">NCGConfig</span></a></span><span>
</span><span id="line-566"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>       </span><span class="hs-comment">-- register to load</span><span>
</span><span id="line-567"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>       </span><span class="hs-comment">-- current stack delta</span><span>
</span><span id="line-568"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>       </span><span class="hs-comment">-- spill slot to use</span><span>
</span><span id="line-569"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-570"></span><span>
</span><span id="line-571"></span><span id="ppc_mkLoadInstr"><span class="annot"><span class="annottext">ppc_mkLoadInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkLoadInstr"><span class="hs-identifier hs-var hs-var">ppc_mkLoadInstr</span></a></span></span><span> </span><span id="local-6989586621681027221"><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027221"><span class="hs-identifier hs-var">config</span></a></span></span><span> </span><span id="local-6989586621681027220"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027220"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681027219"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027219"><span class="hs-identifier hs-var">delta</span></a></span></span><span> </span><span id="local-6989586621681027218"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027218"><span class="hs-identifier hs-var">slot</span></a></span></span><span>
</span><span id="line-572"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681027217"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681027217"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Platform
</span><a href="GHC.CmmToAsm.Config.html#ncgPlatform"><span class="hs-identifier hs-var hs-var">ncgPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027221"><span class="hs-identifier hs-var">config</span></a></span><span>
</span><span id="line-573"></span><span>        </span><span id="local-6989586621681027216"><span class="annot"><span class="annottext">off :: Int
</span><a href="#local-6989586621681027216"><span class="hs-identifier hs-var hs-var">off</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotToOffset"><span class="hs-identifier hs-var">spillSlotToOffset</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027217"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027218"><span class="hs-identifier hs-var">slot</span></a></span><span>
</span><span id="line-574"></span><span>        </span><span id="local-6989586621681027215"><span class="annot"><span class="annottext">arch :: Arch
</span><a href="#local-6989586621681027215"><span class="hs-identifier hs-var hs-var">arch</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformArch"><span class="hs-identifier hs-var">platformArch</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027217"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-575"></span><span>    </span><span class="hs-keyword">in</span><span>
</span><span id="line-576"></span><span>    </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681027214"><span class="annot"><span class="annottext">fmt :: Format
</span><a href="#local-6989586621681027214"><span class="hs-identifier hs-var hs-var">fmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027217"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027220"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-577"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcInteger"><span class="hs-identifier hs-var">RcInteger</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>  </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="#local-6989586621681027215"><span class="hs-identifier hs-var">arch</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-578"></span><span>                                 </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchPPC"><span class="hs-identifier hs-var">ArchPPC</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II32"><span class="hs-identifier hs-var">II32</span></a></span><span>
</span><span id="line-579"></span><span>                                 </span><span class="annot"><span class="annottext">Arch
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II64"><span class="hs-identifier hs-var">II64</span></a></span><span>
</span><span id="line-580"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcDouble"><span class="hs-identifier hs-var">RcDouble</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span>
</span><span id="line-581"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><span class="hs-identifier">_</span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; Format
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PPC.Instr.mkLoadInstr: no match&quot;</span></span><span>
</span><span id="line-582"></span><span>        </span><span id="local-6989586621681027211"><span class="annot"><span class="annottext">instr :: Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="#local-6989586621681027211"><span class="hs-identifier hs-var hs-var">instr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Width -&gt; Bool -&gt; Int -&gt; Maybe Imm
forall a. Integral a =&gt; Width -&gt; Bool -&gt; a -&gt; Maybe Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#makeImmediate"><span class="hs-identifier hs-var">makeImmediate</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027216"><span class="hs-identifier hs-var">off</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027219"><span class="hs-identifier hs-var">delta</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-583"></span><span>                </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span>
</span><span id="line-584"></span><span>                </span><span class="annot"><span class="annottext">Maybe Imm
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#LDFAR"><span class="hs-identifier hs-var">LDFAR</span></a></span><span> </span><span class="hs-comment">-- pseudo instruction: 32 bit offsets</span><span>
</span><span id="line-585"></span><span>
</span><span id="line-586"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="#local-6989586621681027211"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681027214"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027220"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.PPC.Regs.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.PPC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.PPC.Regs.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027216"><span class="hs-identifier hs-var">off</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027219"><span class="hs-identifier hs-var">delta</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-587"></span><span>
</span><span id="line-588"></span><span>
</span><span id="line-589"></span><span class="hs-comment">-- | The size of a minimal stackframe header including minimal</span><span>
</span><span id="line-590"></span><span class="hs-comment">-- parameter save area.</span><span>
</span><span id="line-591"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#stackFrameHeaderSize"><span class="hs-identifier hs-type">stackFrameHeaderSize</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-592"></span><span id="stackFrameHeaderSize"><span class="annot"><span class="annottext">stackFrameHeaderSize :: Platform -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackFrameHeaderSize"><span class="hs-identifier hs-var hs-var">stackFrameHeaderSize</span></a></span></span><span> </span><span id="local-6989586621681027210"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027210"><span class="hs-identifier hs-var">platform</span></a></span></span><span>
</span><span id="line-593"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; OS
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformOS"><span class="hs-identifier hs-var">platformOS</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027210"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-594"></span><span>      </span><span class="annot"><span class="annottext">OS
</span><a href="../../ghc-boot/src/GHC.Platform.html#OSAIX"><span class="hs-identifier hs-var">OSAIX</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">24</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span>
</span><span id="line-595"></span><span>      </span><span class="annot"><span class="annottext">OS
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformArch"><span class="hs-identifier hs-var">platformArch</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027210"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-596"></span><span>                             </span><span class="hs-comment">-- header + parameter save area</span><span>
</span><span id="line-597"></span><span>             </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchPPC"><span class="hs-identifier hs-var">ArchPPC</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">64</span></span><span> </span><span class="hs-comment">-- TODO: check ABI spec</span><span>
</span><span id="line-598"></span><span>             </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#ArchPPC_64"><span class="hs-identifier hs-type">ArchPPC_64</span></a></span><span> </span><span class="annot"><span class="annottext">PPC_64ABI
</span><a href="../../ghc-boot/src/GHC.Platform.html#ELF_V1"><span class="hs-identifier hs-var">ELF_V1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">48</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span>
</span><span id="line-599"></span><span>             </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#ArchPPC_64"><span class="hs-identifier hs-type">ArchPPC_64</span></a></span><span> </span><span class="annot"><span class="annottext">PPC_64ABI
</span><a href="../../ghc-boot/src/GHC.Platform.html#ELF_V2"><span class="hs-identifier hs-var">ELF_V2</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span>
</span><span id="line-600"></span><span>             </span><span class="annot"><span class="annottext">Arch
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PPC.stackFrameHeaderSize: not defined for this OS&quot;</span></span><span>
</span><span id="line-601"></span><span>
</span><span id="line-602"></span><span class="hs-comment">-- | The maximum number of bytes required to spill a register. PPC32</span><span>
</span><span id="line-603"></span><span class="hs-comment">-- has 32-bit GPRs and 64-bit FPRs, while PPC64 has 64-bit GPRs and</span><span>
</span><span id="line-604"></span><span class="hs-comment">-- 64-bit FPRs. So the maximum is 8 regardless of platforms unlike</span><span>
</span><span id="line-605"></span><span class="hs-comment">-- x86. Note that AltiVec's vector registers are 128-bit wide so we</span><span>
</span><span id="line-606"></span><span class="hs-comment">-- must not use this to spill them.</span><span>
</span><span id="line-607"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotSize"><span class="hs-identifier hs-type">spillSlotSize</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-608"></span><span id="spillSlotSize"><span class="annot"><span class="annottext">spillSlotSize :: Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotSize"><span class="hs-identifier hs-var hs-var">spillSlotSize</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span>
</span><span id="line-609"></span><span>
</span><span id="line-610"></span><span class="hs-comment">-- | The number of spill slots available without allocating more.</span><span>
</span><span id="line-611"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#maxSpillSlots"><span class="hs-identifier hs-type">maxSpillSlots</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html#NCGConfig"><span class="hs-identifier hs-type">NCGConfig</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-612"></span><span id="maxSpillSlots"><span class="annot"><span class="annottext">maxSpillSlots :: NCGConfig -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#maxSpillSlots"><span class="hs-identifier hs-var hs-var">maxSpillSlots</span></a></span></span><span> </span><span id="local-6989586621681027204"><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027204"><span class="hs-identifier hs-var">config</span></a></span></span><span>
</span><span id="line-613"></span><span class="hs-comment">--  = 0 -- useful for testing allocMoreStack</span><span>
</span><span id="line-614"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681027203"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681027203"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Platform
</span><a href="GHC.CmmToAsm.Config.html#ncgPlatform"><span class="hs-identifier hs-var hs-var">ncgPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027204"><span class="hs-identifier hs-var">config</span></a></span><span>
</span><span id="line-615"></span><span>      </span><span class="hs-keyword">in</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">NCGConfig -&gt; Int
</span><a href="GHC.CmmToAsm.Config.html#ncgSpillPreallocSize"><span class="hs-identifier hs-var hs-var">ncgSpillPreallocSize</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681027204"><span class="hs-identifier hs-var">config</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackFrameHeaderSize"><span class="hs-identifier hs-var">stackFrameHeaderSize</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027203"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-616"></span><span>         </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#div"><span class="hs-operator hs-var">`div`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotSize"><span class="hs-identifier hs-var">spillSlotSize</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span>
</span><span id="line-617"></span><span>
</span><span id="line-618"></span><span class="hs-comment">-- | The number of bytes that the stack pointer should be aligned</span><span>
</span><span id="line-619"></span><span class="hs-comment">-- to. This is 16 both on PPC32 and PPC64 ELF (see ELF processor</span><span>
</span><span id="line-620"></span><span class="hs-comment">-- specific supplements).</span><span>
</span><span id="line-621"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#stackAlign"><span class="hs-identifier hs-type">stackAlign</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-622"></span><span id="stackAlign"><span class="annot"><span class="annottext">stackAlign :: Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackAlign"><span class="hs-identifier hs-var hs-var">stackAlign</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span>
</span><span id="line-623"></span><span>
</span><span id="line-624"></span><span class="hs-comment">-- | Convert a spill slot number to a *byte* offset, with no sign.</span><span>
</span><span id="line-625"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotToOffset"><span class="hs-identifier hs-type">spillSlotToOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-626"></span><span id="spillSlotToOffset"><span class="annot"><span class="annottext">spillSlotToOffset :: Platform -&gt; Int -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotToOffset"><span class="hs-identifier hs-var hs-var">spillSlotToOffset</span></a></span></span><span> </span><span id="local-6989586621681027200"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027200"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681027199"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027199"><span class="hs-identifier hs-var">slot</span></a></span></span><span>
</span><span id="line-627"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#stackFrameHeaderSize"><span class="hs-identifier hs-var">stackFrameHeaderSize</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681027200"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#spillSlotSize"><span class="hs-identifier hs-var">spillSlotSize</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027199"><span class="hs-identifier hs-var">slot</span></a></span><span>
</span><span id="line-628"></span><span>
</span><span id="line-629"></span><span>
</span><span id="line-630"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-631"></span><span class="hs-comment">-- | See if this instruction is telling us the current C stack delta</span><span>
</span><span id="line-632"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeDeltaInstr"><span class="hs-identifier hs-type">ppc_takeDeltaInstr</span></a></span><span>
</span><span id="line-633"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-634"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-635"></span><span>
</span><span id="line-636"></span><span id="ppc_takeDeltaInstr"><span class="annot"><span class="annottext">ppc_takeDeltaInstr :: Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeDeltaInstr"><span class="hs-identifier hs-var hs-var">ppc_takeDeltaInstr</span></a></span></span><span> </span><span id="local-6989586621681027198"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027198"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-637"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027198"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-638"></span><span>     </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DELTA"><span class="hs-identifier hs-type">DELTA</span></a></span><span> </span><span id="local-6989586621681027197"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027197"><span class="hs-identifier hs-var">i</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Maybe Int
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027197"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-639"></span><span>     </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Int
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-640"></span><span>
</span><span id="line-641"></span><span>
</span><span id="line-642"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isMetaInstr"><span class="hs-identifier hs-type">ppc_isMetaInstr</span></a></span><span>
</span><span id="line-643"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-644"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-645"></span><span>
</span><span id="line-646"></span><span id="ppc_isMetaInstr"><span class="annot"><span class="annottext">ppc_isMetaInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_isMetaInstr"><span class="hs-identifier hs-var hs-var">ppc_isMetaInstr</span></a></span></span><span> </span><span id="local-6989586621681027196"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027196"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-647"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027196"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-648"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#COMMENT"><span class="hs-identifier hs-type">COMMENT</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-649"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LOCATION"><span class="hs-identifier hs-type">LOCATION</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-650"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#LDATA"><span class="hs-identifier hs-type">LDATA</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-651"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#NEWBLOCK"><span class="hs-identifier hs-type">NEWBLOCK</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-652"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#DELTA"><span class="hs-identifier hs-type">DELTA</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-653"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-654"></span><span>
</span><span id="line-655"></span><span>
</span><span id="line-656"></span><span class="hs-comment">-- | Copy the value in a register to another one.</span><span>
</span><span id="line-657"></span><span class="hs-comment">-- Must work for all register classes.</span><span>
</span><span id="line-658"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkRegRegMoveInstr"><span class="hs-identifier hs-type">ppc_mkRegRegMoveInstr</span></a></span><span>
</span><span id="line-659"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-660"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-661"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-662"></span><span>
</span><span id="line-663"></span><span id="ppc_mkRegRegMoveInstr"><span class="annot"><span class="annottext">ppc_mkRegRegMoveInstr :: Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkRegRegMoveInstr"><span class="hs-identifier hs-var hs-var">ppc_mkRegRegMoveInstr</span></a></span></span><span> </span><span id="local-6989586621681027195"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027195"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621681027194"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027194"><span class="hs-identifier hs-var">dst</span></a></span></span><span>
</span><span id="line-664"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-var">MR</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027194"><span class="hs-identifier hs-var">dst</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027195"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-665"></span><span>
</span><span id="line-666"></span><span>
</span><span id="line-667"></span><span class="hs-comment">-- | Make an unconditional jump instruction.</span><span>
</span><span id="line-668"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkJumpInstr"><span class="hs-identifier hs-type">ppc_mkJumpInstr</span></a></span><span>
</span><span id="line-669"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-670"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-671"></span><span>
</span><span id="line-672"></span><span id="ppc_mkJumpInstr"><span class="annot"><span class="annottext">ppc_mkJumpInstr :: BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_mkJumpInstr"><span class="hs-identifier hs-var hs-var">ppc_mkJumpInstr</span></a></span></span><span> </span><span id="local-6989586621681027193"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027193"><span class="hs-identifier hs-var">id</span></a></span></span><span>
</span><span id="line-673"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.PPC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027193"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-674"></span><span>
</span><span id="line-675"></span><span>
</span><span id="line-676"></span><span class="hs-comment">-- | Take the source and destination from this reg -&gt; reg move instruction</span><span>
</span><span id="line-677"></span><span class="hs-comment">-- or Nothing if it's not one</span><span>
</span><span id="line-678"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeRegRegMoveInstr"><span class="hs-identifier hs-type">ppc_takeRegRegMoveInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-679"></span><span id="ppc_takeRegRegMoveInstr"><span class="annot"><span class="annottext">ppc_takeRegRegMoveInstr :: Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeRegRegMoveInstr"><span class="hs-identifier hs-var hs-var">ppc_takeRegRegMoveInstr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#MR"><span class="hs-identifier hs-type">MR</span></a></span><span> </span><span id="local-6989586621681027192"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027192"><span class="hs-identifier hs-var">dst</span></a></span></span><span> </span><span id="local-6989586621681027191"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027191"><span class="hs-identifier hs-var">src</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Reg, Reg) -&gt; Maybe (Reg, Reg)
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027191"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681027192"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-680"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#ppc_takeRegRegMoveInstr"><span class="hs-identifier hs-var">ppc_takeRegRegMoveInstr</span></a></span><span> </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (Reg, Reg)
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-681"></span><span>
</span><span id="line-682"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-683"></span><span class="hs-comment">-- Making far branches</span><span>
</span><span id="line-684"></span><span>
</span><span id="line-685"></span><span class="hs-comment">-- Conditional branches on PowerPC are limited to +-32KB; if our Procs get too</span><span>
</span><span id="line-686"></span><span class="hs-comment">-- big, we have to work around this limitation.</span><span>
</span><span id="line-687"></span><span>
</span><span id="line-688"></span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#makeFarBranches"><span class="hs-identifier hs-type">makeFarBranches</span></a></span><span>
</span><span id="line-689"></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html#LabelMap"><span class="hs-identifier hs-type">LabelMap</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmStatics"><span class="hs-identifier hs-type">RawCmmStatics</span></a></span><span>
</span><span id="line-690"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#NatBasicBlock"><span class="hs-identifier hs-type">NatBasicBlock</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-691"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#NatBasicBlock"><span class="hs-identifier hs-type">NatBasicBlock</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-692"></span><span id="makeFarBranches"><span class="annot"><span class="annottext">makeFarBranches :: LabelMap RawCmmStatics
-&gt; [GenBasicBlock Instr] -&gt; [GenBasicBlock Instr]
</span><a href="GHC.CmmToAsm.PPC.Instr.html#makeFarBranches"><span class="hs-identifier hs-var hs-var">makeFarBranches</span></a></span></span><span> </span><span id="local-6989586621681027189"><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681027189"><span class="hs-identifier hs-var">info_env</span></a></span></span><span> </span><span id="local-6989586621681027188"><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027188"><span class="hs-identifier hs-var">blocks</span></a></span></span><span>
</span><span id="line-693"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[Int] -&gt; Int
forall a. [a] -&gt; a
</span><a href="../../base/src/GHC.List.html#last"><span class="hs-identifier hs-var">last</span></a></span><span> </span><span class="annot"><span class="annottext">[Int]
</span><a href="#local-6989586621681027186"><span class="hs-identifier hs-var">blockAddresses</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027184"><span class="hs-identifier hs-var">nearLimit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027188"><span class="hs-identifier hs-var">blocks</span></a></span><span>
</span><span id="line-694"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Int -&gt; GenBasicBlock Instr -&gt; GenBasicBlock Instr)
-&gt; [Int] -&gt; [GenBasicBlock Instr] -&gt; [GenBasicBlock Instr]
forall a b c. (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</span><a href="../../base/src/GHC.List.html#zipWith"><span class="hs-identifier hs-var">zipWith</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; GenBasicBlock Instr -&gt; GenBasicBlock Instr
</span><a href="#local-6989586621681027182"><span class="hs-identifier hs-var">handleBlock</span></a></span><span> </span><span class="annot"><span class="annottext">[Int]
</span><a href="#local-6989586621681027186"><span class="hs-identifier hs-var">blockAddresses</span></a></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027188"><span class="hs-identifier hs-var">blocks</span></a></span><span>
</span><span id="line-695"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-696"></span><span>        </span><span id="local-6989586621681027186"><span class="annot"><span class="annottext">blockAddresses :: [Int]
</span><a href="#local-6989586621681027186"><span class="hs-identifier hs-var hs-var">blockAddresses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Int -&gt; Int -&gt; Int) -&gt; Int -&gt; [Int] -&gt; [Int]
forall b a. (b -&gt; a -&gt; b) -&gt; b -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.List.html#scanl"><span class="hs-identifier hs-var">scanl</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">(+)</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">([Int] -&gt; [Int]) -&gt; [Int] -&gt; [Int]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(GenBasicBlock Instr -&gt; Int) -&gt; [GenBasicBlock Instr] -&gt; [Int]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">GenBasicBlock Instr -&gt; Int
forall {a}. GenBasicBlock a -&gt; Int
</span><a href="#local-6989586621681027178"><span class="hs-identifier hs-var">blockLen</span></a></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027188"><span class="hs-identifier hs-var">blocks</span></a></span><span>
</span><span id="line-697"></span><span>        </span><span id="local-6989586621681027178"><span class="annot"><span class="annottext">blockLen :: GenBasicBlock a -&gt; Int
</span><a href="#local-6989586621681027178"><span class="hs-identifier hs-var hs-var">blockLen</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-type">BasicBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027176"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621681027176"><span class="hs-identifier hs-var">instrs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621681027176"><span class="hs-identifier hs-var">instrs</span></a></span><span>
</span><span id="line-698"></span><span>
</span><span id="line-699"></span><span>        </span><span id="local-6989586621681027182"><span class="annot"><span class="annottext">handleBlock :: Int -&gt; GenBasicBlock Instr -&gt; GenBasicBlock Instr
</span><a href="#local-6989586621681027182"><span class="hs-identifier hs-var hs-var">handleBlock</span></a></span></span><span> </span><span id="local-6989586621681027173"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027173"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-type">BasicBlock</span></a></span><span> </span><span id="local-6989586621681027172"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027172"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span id="local-6989586621681027171"><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027171"><span class="hs-identifier hs-var">instrs</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-700"></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr] -&gt; GenBasicBlock Instr
forall i. BlockId -&gt; [i] -&gt; GenBasicBlock i
</span><a href="GHC.Cmm.html#BasicBlock"><span class="hs-identifier hs-var">BasicBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027172"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Int -&gt; Instr -&gt; Instr) -&gt; [Int] -&gt; [Instr] -&gt; [Instr]
forall a b c. (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</span><a href="../../base/src/GHC.List.html#zipWith"><span class="hs-identifier hs-var">zipWith</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Instr -&gt; Instr
</span><a href="#local-6989586621681027170"><span class="hs-identifier hs-var">makeFar</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027173"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Instr]
</span><a href="#local-6989586621681027171"><span class="hs-identifier hs-var">instrs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-701"></span><span>
</span><span id="line-702"></span><span>        </span><span id="local-6989586621681027170"><span class="annot"><span class="annottext">makeFar :: Int -&gt; Instr -&gt; Instr
</span><a href="#local-6989586621681027170"><span class="hs-identifier hs-var hs-var">makeFar</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.PPC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span id="local-6989586621681027166"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027166"><span class="hs-identifier hs-var">tgt</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.PPC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027166"><span class="hs-identifier hs-var">tgt</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-703"></span><span>        </span><span class="annot"><a href="#local-6989586621681027170"><span class="hs-identifier hs-var">makeFar</span></a></span><span> </span><span id="local-6989586621681027165"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027165"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-type">BCC</span></a></span><span> </span><span id="local-6989586621681027164"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027164"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621681027163"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027163"><span class="hs-identifier hs-var">tgt</span></a></span></span><span> </span><span id="local-6989586621681027162"><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027162"><span class="hs-identifier hs-var">p</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-704"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int
forall a. Num a =&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#abs"><span class="hs-identifier hs-var">abs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027165"><span class="hs-identifier hs-var">addr</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027160"><span class="hs-identifier hs-var">targetAddr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;=</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027184"><span class="hs-identifier hs-var">nearLimit</span></a></span><span>
</span><span id="line-705"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCCFAR"><span class="hs-identifier hs-var">BCCFAR</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027164"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027163"><span class="hs-identifier hs-var">tgt</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027162"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-706"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-707"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; BlockId -&gt; Maybe Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.PPC.Instr.html#BCC"><span class="hs-identifier hs-var">BCC</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681027164"><span class="hs-identifier hs-var">cond</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027163"><span class="hs-identifier hs-var">tgt</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><a href="#local-6989586621681027162"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-708"></span><span>            </span><span class="hs-keyword">where</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681027160"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681027160"><span class="hs-identifier hs-var">targetAddr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqFM BlockId Int -&gt; BlockId -&gt; Maybe Int
forall key elt. Uniquable key =&gt; UniqFM key elt -&gt; key -&gt; Maybe elt
</span><a href="GHC.Types.Unique.FM.html#lookupUFM"><span class="hs-identifier hs-var">lookupUFM</span></a></span><span> </span><span class="annot"><span class="annottext">UniqFM BlockId Int
</span><a href="#local-6989586621681027157"><span class="hs-identifier hs-var">blockAddressMap</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681027163"><span class="hs-identifier hs-var">tgt</span></a></span><span>
</span><span id="line-709"></span><span>        </span><span class="annot"><a href="#local-6989586621681027170"><span class="hs-identifier hs-var">makeFar</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681027156"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027156"><span class="hs-identifier hs-var">other</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681027156"><span class="hs-identifier hs-var">other</span></a></span><span>
</span><span id="line-710"></span><span>
</span><span id="line-711"></span><span>        </span><span class="hs-comment">-- 8192 instructions are allowed; let's keep some distance, as</span><span>
</span><span id="line-712"></span><span>        </span><span class="hs-comment">-- we have a few pseudo-insns that are pretty-printed as</span><span>
</span><span id="line-713"></span><span>        </span><span class="hs-comment">-- multiple instructions, and it's just not worth the effort</span><span>
</span><span id="line-714"></span><span>        </span><span class="hs-comment">-- to calculate things exactly</span><span>
</span><span id="line-715"></span><span>        </span><span id="local-6989586621681027184"><span class="annot"><span class="annottext">nearLimit :: Int
</span><a href="#local-6989586621681027184"><span class="hs-identifier hs-var hs-var">nearLimit</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">7000</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics -&gt; Int
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; Int
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapSize"><span class="hs-identifier hs-var">mapSize</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681027189"><span class="hs-identifier hs-var">info_env</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.Cmm.Info.html#maxRetInfoTableSizeW"><span class="hs-identifier hs-var">maxRetInfoTableSizeW</span></a></span><span>
</span><span id="line-716"></span><span>
</span><span id="line-717"></span><span>        </span><span id="local-6989586621681027157"><span class="annot"><span class="annottext">blockAddressMap :: UniqFM BlockId Int
</span><a href="#local-6989586621681027157"><span class="hs-identifier hs-var hs-var">blockAddressMap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(BlockId, Int)] -&gt; UniqFM BlockId Int
forall key elt. Uniquable key =&gt; [(key, elt)] -&gt; UniqFM key elt
</span><a href="GHC.Types.Unique.FM.html#listToUFM"><span class="hs-identifier hs-var">listToUFM</span></a></span><span> </span><span class="annot"><span class="annottext">([(BlockId, Int)] -&gt; UniqFM BlockId Int)
-&gt; [(BlockId, Int)] -&gt; UniqFM BlockId Int
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[BlockId] -&gt; [Int] -&gt; [(BlockId, Int)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(GenBasicBlock Instr -&gt; BlockId)
-&gt; [GenBasicBlock Instr] -&gt; [BlockId]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">GenBasicBlock Instr -&gt; BlockId
forall i. GenBasicBlock i -&gt; BlockId
</span><a href="GHC.Cmm.html#blockId"><span class="hs-identifier hs-var">blockId</span></a></span><span> </span><span class="annot"><span class="annottext">[GenBasicBlock Instr]
</span><a href="#local-6989586621681027188"><span class="hs-identifier hs-var">blocks</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Int]
</span><a href="#local-6989586621681027186"><span class="hs-identifier hs-var">blockAddresses</span></a></span><span>
</span><span id="line-718"></span></pre></body></html>